Skip to content

Commit a999ff7

Browse files
committed
release: v0.4.5
1 parent 75c3788 commit a999ff7

6 files changed

Lines changed: 889 additions & 877 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
## [0.4.5] - 2026-03-10
8+
9+
### Fixed
10+
- **`nlm doctor` crash on Windows (Issue #87)** — Fixed `UnicodeDecodeError` when running `claude mcp list` on Windows systems with non-UTF-8 default encodings (e.g., `cp936`, `cp1252`). Added explicit `encoding="utf-8"` and `errors="replace"` to the subprocess call. Also added a null check for `result.stdout` to prevent `AttributeError` when the subprocess returns no output.
11+
- **Silent Chrome launch failures on Windows (Issue #86)**`launch_chrome_process` was silently swallowing all `subprocess.Popen` exceptions, causing `nlm login` to report the cryptic "Cannot connect to browser on port XXXX" with no indication of what went wrong. Now logs the browser path, port, and exception details so users get actionable error messages. Added debug logging for successful launches as well.
12+
713
## [0.4.4] - 2026-03-08
814

915
### Fixed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "notebooklm-mcp-cli"
7-
version = "0.4.4"
7+
version = "0.4.5"
88
description = "Unified CLI and MCP server for Google NotebookLM"
99
readme = "README.md"
1010
license = "MIT"

src/notebooklm_tools/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""NotebookLM Tools - Unified CLI and MCP server for Google NotebookLM."""
22

3-
__version__ = "0.4.4"
3+
__version__ = "0.4.5"
44

55
from notebooklm_tools.core.client import NotebookLMClient
66

src/notebooklm_tools/cli/commands/doctor.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,9 @@ def _check_clients(verbose: bool) -> bool:
233233
result = subprocess.run(
234234
[claude_cmd, "mcp", "list"],
235235
capture_output=True, text=True, timeout=5,
236+
encoding="utf-8", errors="replace",
236237
)
237-
if "notebooklm" in result.stdout.lower():
238+
if result.stdout and "notebooklm" in result.stdout.lower():
238239
status = True
239240
except (subprocess.TimeoutExpired, OSError):
240241
pass

src/notebooklm_tools/utils/cdp.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,13 +436,18 @@ def launch_chrome_process(
436436
args.append("--headless=new")
437437

438438
try:
439+
_logger.debug("Launching browser: %s on port %d", chrome_path, port)
439440
process = subprocess.Popen(
440441
args,
441442
stdout=subprocess.PIPE,
442443
stderr=subprocess.PIPE,
443444
)
444445
return process
445-
except Exception:
446+
except Exception as e:
447+
_logger.error(
448+
"Failed to launch browser at '%s' on port %d: %s",
449+
chrome_path, port, e,
450+
)
446451
return None
447452

448453

0 commit comments

Comments
 (0)