Skip to content

Commit d385a11

Browse files
committed
Release v0.6.1
Signed-off-by: Phillip Sitbon <phillip.sitbon@gmail.com>
2 parents 30b4831 + 68a5196 commit d385a11

File tree

10 files changed

+1761
-75
lines changed

10 files changed

+1761
-75
lines changed

.github/workflows/docker-publish.yml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ jobs:
100100
name: Push Dev Images
101101
runs-on: ubuntu-latest
102102

103-
needs: [build-dev-image, test-dev-image]
103+
needs: build-dev-image
104+
if: ${{ always() && needs.build-dev-image.result == 'success' && (jobs.test-dev-image.result == 'success' || jobs.test-dev-image.result == 'skipped') }}
104105

105106
permissions:
106107
contents: read
@@ -173,34 +174,35 @@ jobs:
173174
name: Build and Push Image
174175
runs-on: ubuntu-latest
175176

176-
needs: [build-dev-image, test-dev-image]
177+
needs: build-dev-image
178+
if: ${{ always() && needs.build-dev-image.result == 'success' && (jobs.test-dev-image.result == 'success' || jobs.test-dev-image.result == 'skipped') }}
177179

178180
permissions:
179181
contents: read
180182
packages: write
181-
183+
182184
strategy:
183185
matrix:
184186
include:
185187
- target: pre
186188
suffix: "-pre"
187189
- target: pro
188190
suffix: ""
189-
191+
190192
steps:
191193
- name: Checkout
192194
uses: actions/checkout@v4
193-
195+
194196
- name: Set up Docker Buildx
195197
uses: docker/setup-buildx-action@v3
196-
198+
197199
- name: Log in to Container Registry
198200
uses: docker/login-action@v3
199201
with:
200202
registry: ${{ env.REGISTRY }}
201203
username: ${{ github.actor }}
202204
password: ${{ secrets.GITHUB_TOKEN }}
203-
205+
204206
- name: Extract Metadata
205207
id: meta
206208
uses: docker/metadata-action@v5
@@ -212,7 +214,7 @@ jobs:
212214
type=semver,pattern=v{{major}}.{{minor}}.{{patch}},pattern={{major}}.{{minor}}.{{patch}},suffix=${{ matrix.suffix }}
213215
type=semver,pattern=v{{major}}.{{minor}}.{{patch}},pattern={{major}}.{{minor}},suffix=${{ matrix.suffix }}
214216
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.target == 'pro' }}
215-
217+
216218
- name: Build and push Docker image
217219
uses: docker/build-push-action@v6
218220
with:
@@ -231,7 +233,7 @@ jobs:
231233
name: Cleanup Untagged Images
232234
runs-on: ubuntu-latest
233235

234-
needs: [test-dev-image, build-and-push-image]
236+
needs: [push-dev-image, build-and-push-image]
235237
if: ${{ github.event_name != 'pull_request' }}
236238

237239
permissions:

.github/workflows/manual-publish.yml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,7 @@ jobs:
102102
103103
# Get changelog for GitHub release
104104
echo "CHANGELOG<<EOFEOF" >> $GITHUB_ENV
105-
if git show-ref --tags --quiet --verify refs/tags/latest-publish; then
106-
# Show changes since last publish
107-
git log latest-publish..HEAD --pretty=format:'### [%s](https://github.com/${{ github.repository }}/commit/%H)%n*%ad*%n%n%b%n' | sed -e '/^Signed-off-by:/d' -e '/^### /!{/^$/!s/^/> /}' -e 's/^$/>/g' >> $GITHUB_ENV
108-
else
109-
# No previous publish, show last 2 commits
110-
git log -2 --pretty=format:'### [%s](https://github.com/${{ github.repository }}/commit/%H)%n*%ad*%n%n%b%n' | sed -e '/^Signed-off-by:/d' -e '/^### /!{/^$/!s/^/> /}' -e 's/^$/>/g' >> $GITHUB_ENV
111-
fi
105+
git log latest-publish..HEAD --pretty=format:'### [%s](https://github.com/${{ github.repository }}/commit/%H)%n*%ad*%n%n%b%n' | sed '/^Signed-off-by:/d' | sed 's/^$/>/g' >> $GITHUB_ENV
112106
echo "EOFEOF" >> $GITHUB_ENV
113107
114108
git push origin "${TAG}"
@@ -120,7 +114,7 @@ jobs:
120114
if git show-ref --tags --quiet --verify refs/tags/latest-publish; then
121115
# Get the version from latest-publish tag
122116
git checkout latest-publish
123-
LATEST_VERSION=$(uv version --short)
117+
LATEST_VERSION=$(uv run python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])")
124118
git checkout -
125119
126120
# Extract base versions (first 3 parts only)

.github/workflows/publish.yml

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ jobs:
3232
- name: Check if version changed
3333
id: version_check
3434
run: |
35-
# Get current version
36-
CURRENT_VERSION=$(uv version --short)
35+
# Get current version from pyproject.toml
36+
CURRENT_VERSION=$(uv run python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])")
3737
echo "version=${CURRENT_VERSION}" >> $GITHUB_OUTPUT
3838
3939
# Get last published version from latest-publish tag
4040
if git show-ref --tags --quiet --verify refs/tags/latest-publish; then
4141
# Checkout the last published commit
4242
git checkout latest-publish
43-
LAST_VERSION=$(uv version --short)
43+
LAST_VERSION=$(uv run python -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])")
4444
git checkout -
4545
else
4646
LAST_VERSION=""
@@ -131,12 +131,7 @@ jobs:
131131
132132
# Get changelog since last release with rich formatting
133133
echo "CHANGELOG<<EOFEOF" >> $GITHUB_ENV
134-
if git show-ref --tags --quiet --verify refs/tags/${LATEST_TAG}; then
135-
git log ${LATEST_TAG}..${{ github.sha }} --pretty=format:'### [%s](https://github.com/${{ github.repository }}/commit/%H)%nDate: %ad*%n%n%b%n' | sed -e '/^Signed-off-by:/d' -e '/^### /!{/^$/!s/^/> /}' -e 's/^$/>/g' >> $GITHUB_ENV
136-
else
137-
# No previous release, show last 2 commits
138-
git log -2 --pretty=format:'### [%s](https://github.com/${{ github.repository }}/commit/%H)%nDate: %ad*%n%n%b%n' | sed -e '/^Signed-off-by:/d' -e '/^### /!{/^$/!s/^/> /}' -e 's/^$/>/g' >> $GITHUB_ENV
139-
fi
134+
git log ${LATEST_TAG}..${{ github.sha }} --pretty=format:'### [%s](https://github.com/${{ github.repository }}/commit/%H)%nDate: %ad*%n%n%b%n' | sed '/^Signed-off-by:/d' | sed 's/^$/>/g' >> $GITHUB_ENV
140135
echo "EOFEOF" >> $GITHUB_ENV
141136
142137
# Delete remote latest-publish tag FIRST (before creating new one)

docs/mbro.md

Lines changed: 120 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,93 @@ mbro:memory> prompt summarize {"topic": "recent_memories"}
148148

149149
## Advanced Features
150150

151+
### Enhanced Mode Features (New!)
152+
153+
mbro includes advanced features that make it easier and more intuitive to use:
154+
155+
#### 🗣️ Natural Language Commands
156+
Instead of memorizing exact syntax, use natural language:
157+
```bash
158+
# Traditional commands
159+
mbro> tools
160+
mbro> call add {"a": 5, "b": 3}
161+
162+
# Natural language alternatives
163+
mbro> show me all tools
164+
mbro> call add with a=5 and b=3
165+
mbro> what tools are available?
166+
```
167+
168+
#### 📝 Smart Argument Parsing
169+
Multiple ways to specify arguments:
170+
```bash
171+
# JSON format (traditional)
172+
mbro> call weather {"location": "London", "units": "celsius"}
173+
174+
# Key=value format
175+
mbro> call weather location=London units=celsius
176+
177+
# Natural language
178+
mbro> call weather with location as London and units as celsius
179+
```
180+
181+
#### 📄 Multiline JSON Editor
182+
Press `Ctrl+M` to open a multiline JSON editor with:
183+
- Syntax highlighting
184+
- Real-time validation
185+
- Auto-indentation
186+
- Template generation from tool schemas
187+
188+
Example workflow:
189+
```bash
190+
mbro> call complex_tool
191+
This tool requires arguments. Press Ctrl+M to enter them.
192+
mbro> <Ctrl+M>
193+
Enter JSON arguments for 'complex_tool':
194+
Expected properties:
195+
data: object (required) - Complex data structure
196+
options: array - Configuration options
197+
198+
{
199+
"data": {
200+
"key": "value"
201+
},
202+
"options": ["opt1", "opt2"]
203+
}
204+
<Ctrl+D to submit>
205+
```
206+
207+
#### 🔍 Context-Aware Completions
208+
Tab completion now includes:
209+
- Tool names with descriptions
210+
- Connection names with status (active/inactive)
211+
- Parameter suggestions based on tool schemas
212+
- Smart filtering as you type
213+
214+
#### 💡 Intelligent Error Suggestions
215+
When errors occur, get helpful suggestions:
216+
```bash
217+
mbro> call wether {"city": "London"}
218+
Error: Tool 'wether' not found.
219+
Did you mean: weather, whether_tool?
220+
```
221+
222+
#### ⚡ Enhanced Search
223+
- Multi-word search support: `search file manager`
224+
- Searches across names, descriptions, and URIs
225+
- More flexible matching algorithms
226+
227+
### Keyboard Shortcuts
228+
229+
| Shortcut | Action | Context |
230+
|----------|--------|---------|
231+
| `Ctrl+M` | Open multiline JSON editor | Any prompt |
232+
| `Ctrl+R` | Repeat last command | Empty prompt |
233+
| `Ctrl+L` | Clear screen | Any time |
234+
| `Tab` | Autocomplete with descriptions | While typing |
235+
| `↑/↓` | Navigate command history | Any prompt |
236+
| `Ctrl+D` | Exit mbro or submit in multiline | Depends on context |
237+
151238
### Tool Argument Formatting
152239

153240
mbro supports multiple ways to provide tool arguments:
@@ -309,6 +396,37 @@ mbro:magg> call weather_current {"location": "London"}
309396
}
310397
```
311398

399+
### Example 4: Using Natural Language (Enhanced Mode)
400+
401+
```bash
402+
$ mbro
403+
MBRO - MCP Browser
404+
Type 'help' for available commands or 'quit' to exit.
405+
Enhanced mode: Ctrl+M for multiline JSON, natural language supported
406+
407+
mbro> connect to calculator at npx -y @modelcontextprotocol/server-calculator
408+
Connected to 'calculator' (Tools: 4, Resources: 0, Prompts: 0)
409+
410+
mbro:calculator> what tools are available?
411+
Available tools:
412+
- add: Add two numbers
413+
- subtract: Subtract two numbers
414+
- multiply: Multiply two numbers
415+
- divide: Divide two numbers
416+
417+
mbro:calculator> call add with a=25 and b=17
418+
42
419+
420+
mbro:calculator> search for mult
421+
Search results for 'mult':
422+
423+
Tools (1):
424+
- multiply: Multiply two numbers
425+
426+
mbro:calculator> call multiply a=6 b=7
427+
42
428+
```
429+
312430
## Output Modes
313431

314432
mbro supports different output modes for various use cases:
@@ -364,8 +482,9 @@ echo $result | jq '.'
364482

365483
### Command Line Options
366484
- `--connect NAME CONNECTION` - Connect to a server on startup
367-
- `--json` - Output only JSON (machine-readable)
485+
- `--json` - Output only JSON (machine-readable, disables enhanced features)
368486
- `--no-rich` - Disable Rich formatting
487+
- `--no-enhanced` - Disable enhanced features (natural language, multiline, etc.)
369488
- `--indent N` - Set JSON indent level (0 for compact)
370489
- `--repl` - Start in async Python REPL mode instead of command shell
371490
- `--list-connections` - List all available connections

0 commit comments

Comments
 (0)