## Summary Add LSP trace recording and replay-based smoke testing infrastructure. ### clice changes (`src/clice.cc`) - Add `--log-level` CLI option with validation (rejects unknown levels instead of silently defaulting to off) - Add `--record <path>` CLI option that wraps the transport with `RecordingTransport` to capture client→server messages as timestamped JSONL - Works in both pipe and socket modes - Fix exit code: `loop.run()` returns non-zero after `uv_stop()`, explicitly return 0 after clean shutdown ### Compile logging (`src/compile/compilation.cpp`) - Print compile commands at debug log level ### Replay script (`tests/replay.py`) - Timestamp-based pacing: sleeps between messages based on recorded intervals, faithful to original editor session - Automatic workspace path rewriting: infers repo root from script location, rewrites absolute paths in trace so CI replay works without extra arguments - Handles server→client requests (workDoneProgress/create, registerCapability, etc.) with default responses - Waits for all pending responses before sending shutdown/exit - Detects server exit mid-replay and fails pending futures immediately instead of hanging - Reports PASS/FAIL/SKIP with stderr tail on failure ### CI & config - Add `smoke-test` pixi task and CI workflow step (runs after integration tests) - `.gitattributes`: mark `tests/smoke/*.jsonl` as `linguist-generated binary` to suppress diffs - Add sample trace file `tests/smoke/session.jsonl` ### VSCode extension - Add restart command (`clice.restart`) - Support `CLICE_MODE` env var to override mode setting (for debug launch configs) - Split launch configs into socket/pipe variants with `--disable-extensions` ## Test plan - [x] `python tests/replay.py tests/smoke/session.jsonl --clice ./build/RelWithDebInfo/bin/clice` passes locally - [ ] CI smoke test passes on Linux/macOS/Windows 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
10 lines
400 B
Plaintext
10 lines
400 B
Plaintext
# SCM syntax highlighting & preventing 3-way merges
|
|
pixi.lock merge=binary linguist-language=YAML linguist-generated=true -diff
|
|
|
|
# Force LF line endings for test data so that byte offsets from clang
|
|
# (which reads from disk) match the content sent by didOpen in tests.
|
|
tests/data/** text eol=lf
|
|
|
|
# Treat trace files as binary to suppress text diffs
|
|
tests/smoke/*.jsonl linguist-generated=true binary
|