Files
sessions/.gitignore
Myeongseon Choi c066cb9962
Some checks failed
ci / mutation test (broker) (push) Has been skipped
ci / rust debug (push) Failing after 2m15s
ci / rust release (push) Successful in 2m24s
ci / python (push) Has been skipped
ci / test-health gate (push) Successful in 17s
Release Publish (Gitea session_helper) / verify-release-tag (push) Successful in 18s
Release Publish (Gitea session_helper) / publish-linux-x86_64 (push) Successful in 3m40s
chore(release): v0.6.10 — Polish-track batch + diagnostic instrumentation
Terminal hover (M1, shipped):
- ``terminal_link_click`` now strips ANSI/VT100 escapes at
  ``classify_terminal_token`` entry so abspath / URL detection works
  against ANSI-coloured ``ls`` output (allocation-free fast path when
  no ``\x1b`` is present).
- New ``_RELPATH_PATTERN`` + ``_resolve_relpath_in_cache(view, token)``
  resolve relative tokens against the workspace mirror via
  ``RemoteToLocalCacheMapper`` — only marked clickable when the local
  cache file actually exists; directory / ``..`` traversal /
  no-context cases all safely fall through.
- Click handler routes ``relpath`` outcomes through
  ``_handle_local_path`` directly (no bridge round-trip needed).
- Structured ``terminal_link.hover.*`` / ``terminal_link.click`` logs
  at every decision point now name ``matched_kind`` / ``matched_text``
  / ``resolved_target`` / ``action`` / ``outcome`` /
  ``source=hover_cache|reclassify`` so the next macOS Cmd+click
  "paint OK / click silent" repro can be diagnosed from logs alone.

Terminal close (M4, partial):
- ``terminal_tmux_session.close_terminal_session(host, name, *, kind)``
  unifies the three close paths via ``TerminalCloseOutcome``:
  ``"plain"`` = ``tmux kill-session`` (non-persistent default-on-pane
  close), ``"kill"`` = same SSH effect but explicit user action
  (palette command path), ``"detach"`` = current default (no SSH
  call, session persists).
- New ``sessions_terminal_close_default`` setting accepts
  ``"detach"`` (default, current behavior) or ``"plain"``;
  ``"kill"`` deliberately excluded from default policy
  (regression-guarded).
- ``kill_terminal_session()`` retained for backward compat —
  ``close_terminal_session("plain"|"kill")`` delegates so
  session-name validation + argv shape stay in one place.
- Palette wiring (new ``Sessions: Close Remote Terminal (don't
  persist)`` command) + on-pane-close listener that reads the new
  setting are deferred to a follow-up commit; the internal API in
  this release is feature-complete and tested but not yet
  user-reachable from the palette.

Diagnostic instrumentation (no behavior change):
- ``jupyter_hosting.build_notebook_url`` logs ``local_port`` +
  ``notebook_path`` at entry.
- ``commands_python_pipeline._open_remote_jupyter_in_browser`` logs
  the constructed URL right after ``build_notebook_url``, again at
  ``finish()`` entry, again immediately before ``webbrowser.open``,
  and ``.exception(...)`` inside the previously-silent
  ``except Exception: pass`` branch — pinpoints which step swallows
  the open in the slow-link "queue.done elapsed_ms=27748 but no
  browser tab" repro.
- ``ssh_file_transport._execute_rust_bridge_request_persistent``
  extracts ``payload_bytes`` + ``params.max_traversal_depth`` from
  the request payload and threads both into the
  ``bridge.request_timeout`` trace event, so the mirror-sync
  deep-traversal hang
  (``stall_phase=awaiting_response_dispatch`` after 45s) reports the
  depth + payload size that hit the timeout.
- ``sessions_native::broker::dispatch_response_line`` gains an
  env-gated (``SESSIONS_BROKER_DISPATCH_DEBUG``) stderr trail
  covering enter / parse-OK / parse-FAILED / no-id-drop /
  id-and-slot-presence — zero noise unless explicitly enabled,
  drained through the existing ``STDERR_TAIL_CAPACITY=100`` ring so
  ``_rust_ffi.stderr_tail(host_alias)`` surfaces the trace
  post-repro.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 13:33:28 +09:00

18 lines
147 B
Plaintext

__pycache__/
.pytest_cache/
.ruff_cache/
.coverage
.mypy_cache/
.venv/
.pre-commit-cache/
build-check/
dist/
target/
*.pyc
*.pyo
*.pyd
.claude/