7 Commits
Author SHA1 Message Date
Gérald LONLASandClaude Opus 5.5 4d50a97925 fix(network): explain macOS Local Network denials and ship a LAN forwarder (#20)
On macOS, an app without Local Network permission gets "[Errno 65] No route
to host" for every host on the local network, surfaced by the OpenAI client as
a bare "Connection error." Some launchers (Comfy Desktop 1.1.3) never request
the permission, so it cannot be granted in System Settings at all.

- network.py: detect the denial (darwin + EHOSTUNREACH anywhere in the
  exception chain + a LAN target) and raise LocalNetworkBlockedError with a
  fix built from the user's own server_url. Wired into Connect, the
  /lmstudio/test and /lmstudio/models routes, Text Gen and Image To Text.
  Other errors and platforms are untouched.
- scripts/lan_forward.py: stdlib-only relay from 127.0.0.1 (loopback is
  exempt) to the LM Studio host. --target is required; no built-in address.
  Probes the target on startup and explains failures.
- README: troubleshooting section. launchd agents are blocked the same way,
  so the start-at-login recipe is a .command file opened by Terminal.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 00:10:42 +08:00
Gérald LONLASandClaude Opus 4.8 873343667e feat(connect): tri-state thinking control, native model dropdown, UI rework (#19)
Replace the binary "Enable Reasoning" toggle with a tri-state
Thinking / Reasoning control (auto / on / off) that drives LM Studio's
template-level reasoning switch via chat_template_kwargs.enable_thinking
(nested — a top-level field never reaches the Jinja template):

- off  -> suppress: enable_thinking:false + a closed <think></think>
          assistant prefill, so a reasoning model answers directly instead
          of burning its whole budget on a hidden think trace.
- on   -> force: enable_thinking:true.
- auto -> force for families that stay silent by default (Gemma), otherwise
          send nothing (Qwen3-style templates already think by default).

Applied to both the responses and chat.completions paths in the text and
image nodes, so reasoning is controlled consistently regardless of which
endpoint the server supports.

Fix the duplicate "Model" field: the web extension used to inject a second
combo widget and hide the backend string widget (unreliably), leaving two
model fields on screen. The model input is now a native io.Combo populated
in place by Refresh Models; `model` is listed in validate_inputs so ComfyUI
skips its "value not in list" check (the real options are only known at
runtime).

Rework the Connect node UI: essentials first (Server URL -> Model ->
Thinking), secondary settings moved to advanced, buttons show progress
labels and toast feedback instead of a blocking alert, and the status line
reports the resolved thinking mode.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 01:05:26 +08:00
Gerald LonlasandClaude Sonnet 4.6 969e3acb19 fix: api key normalization, UI typo, dead code, route timeout
connect_node.py
- Fix UI label typo: "Enable Reasonning" → "Enable Reasoning"
- Use normalize_api_key() instead of an inline (api_token or "-").strip()
  expression; the helper also checks DEFAULT_API_KEY_PLACEHOLDER so both
  code paths now agree on the canonical fallback value

client.py
- Remove build_responses_input_with_image(): dead code; image_to_text_node
  builds its own multi-image payload directly in _responses_kwargs() and
  this function was never imported or called

routes.py
- _test_handler default timeout: 600 s → 15 s, consistent with
  _models_handler. Both handlers probe connectivity identically; a 10-min
  default on a "Test Connection" button is a foot-gun when called without
  a timeout_seconds query param.
- Drop now-unused DEFAULT_TIMEOUT_SECONDS import

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 21:11:30 +08:00
Gerald Lonlas a5b030aabd fix: preserve connect widget order for api token and model dropdown 2026-03-04 14:46:45 +08:00
Gerald Lonlas 4a1fbd9acc feat: reorder LMStudio connect fields and move connectivity test to advanced 2026-03-04 14:42:32 +08:00
Gerald Lonlas cc556cb5af fix: avoid combo whitelist validation and defer linked prompt checks to execute 2026-03-04 14:32:43 +08:00
Gerald Lonlas e99858f857 feat: implement LMStudio connect, text-gen and image-to-text nodes 2026-03-04 14:04:42 +08:00