Commit Graph
1685 Commits
Author SHA1 Message Date
pkuzicandClaude Opus 5.5 9f874e33e6 MONKEY (fix-daylight): repair the Torch Terrain Shadows tooltip string
The daylight lane's tooltip had raw line breaks inside a Lua string instead of
an escaped blank line, a syntax error that broke OptionsFrame.xml's inline
script (an error dialog on the UI-fixture captures).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:18:44 +01:00
pkuzicandClaude Opus 5.5 5d201387ee MONKEY (fix-fog): LightFogBand sample without a per-frame Vec (review B11)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:17:00 +01:00
pkuzicandClaude Opus 5.5 e6a36bfff6 MONKEY (fix-fog): LightFogBand sample without a per-frame Vec (review B11)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:17:00 +01:00
pkuzicandClaude Opus 5.5 361850a49d MONKEY (fix-wind): document the static shadow under swaying leaves (review W6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:04:05 +01:00
pkuzicandClaude Opus 5.5 b8fea8e78c MONKEY (fix-wind): document the static shadow under swaying leaves (review W6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:04:05 +01:00
pkuzicandClaude Opus 5.5 55e155cb97 MONKEY (fix-wet): wet-stormwind-night capture scenario
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:03:14 +01:00
pkuzicandClaude Opus 5.5 b259f54242 MONKEY (fix-wet): wet-stormwind-night capture scenario
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:03:14 +01:00
pkuzicandClaude Opus 5.5 5cadc52a49 MONKEY (fix-daylight): gate the district window split; per-slot terrain torch keys
Review B4: the Stormwind window split changed the default image with no switch.
New cvar daylightWindowSplit (default 1 = merged behaviour, a future High-only
preset member), bridged to daylight::set_window_split. Review B5: each settled
exterior torch slot is keyed by the resident tiles whose footprint reaches its
sphere (terrain_torch_generation_near), not a global stamp that re-rendered
every slot on any stream event.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:02:15 +01:00
pkuzicandClaude Opus 5.5 7808f34cb2 MONKEY (fix-daylight): gate the district window split; per-slot terrain torch keys
Review B4: the Stormwind window split changed the default image with no switch.
New cvar daylightWindowSplit (default 1 = merged behaviour, a future High-only
preset member), bridged to daylight::set_window_split. Review B5: each settled
exterior torch slot is keyed by the resident tiles whose footprint reaches its
sphere (terrain_torch_generation_near), not a global stamp that re-rendered
every slot on any stream event.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:02:15 +01:00
pkuzicandClaude Opus 5.5 cd32ca2044 MONKEY (fix-wind): one grass bend span per model; warm the clutter UV_1 layout
Review W4: the bend height was normalised per submesh, so a trunk + canopy
detail doodad tore apart at the seam; the span is now taken over all of the
model's submeshes. Review W5: clutter meshes carry UV_1 (VERTEX_UVS_B), so the
six clutter pipelines are also warmed on the POS+NORMAL+UV0+UV1+COLOR quad.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:02:12 +01:00
pkuzicandClaude Opus 5.5 bc7dc6509b MONKEY (fix-wind): one grass bend span per model; warm the clutter UV_1 layout
Review W4: the bend height was normalised per submesh, so a trunk + canopy
detail doodad tore apart at the seam; the span is now taken over all of the
model's submeshes. Review W5: clutter meshes carry UV_1 (VERTEX_UVS_B), so the
six clutter pipelines are also warmed on the POS+NORMAL+UV0+UV1+COLOR quad.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:02:12 +01:00
pkuzicandClaude Opus 5.5 263d7ab765 MONKEY (fix-sky): order the sky and cloud FX readers after tick_clouds
Review B9: update_sky_colors and update_cloud_fx read the cloud coverage with no
order against tick_clouds, so the glow's cover sample was this frame's or the
last one's nondeterministically. New CloudTick set; both run after it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:02:09 +01:00
pkuzicandClaude Opus 5.5 cf7b401599 MONKEY (fix-sky): order the sky and cloud FX readers after tick_clouds
Review B9: update_sky_colors and update_cloud_fx read the cloud coverage with no
order against tick_clouds, so the glow's cover sample was this frame's or the
last one's nondeterministically. New CloudTick set; both run after it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:02:09 +01:00
pkuzicandClaude Opus 5.5 4f5dd17f8d MONKEY (fix-sky): day-long f64 sky clock; twinkle rates whole cycles per wrap
Review B2: the f32 clock wrapped hourly and every star's twinkle jumped at the
wrap. It now accumulates in f64 and wraps at 86400 s; the shader rounds each
twinkle rate to whole cycles per wrap, so the stars are seamless. The High
cloud detail drift still re-patterns once per 24 h (noted).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:57:20 +01:00
pkuzicandClaude Opus 5.5 474b641499 MONKEY (fix-sky): day-long f64 sky clock; twinkle rates whole cycles per wrap
Review B2: the f32 clock wrapped hourly and every star's twinkle jumped at the
wrap. It now accumulates in f64 and wraps at 86400 s; the shader rounds each
twinkle rate to whole cycles per wrap, so the stars are seamless. The High
cloud detail drift still re-patterns once per 24 h (noted).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:57:20 +01:00
pkuzicandClaude Opus 5.5 9c7e5fa4da MONKEY (fix-wet): seamless ripple wrap, no dry-weather churn, no sheen NaN, windows stay lit
Review B3: floor(cycle) % 50 keeps the ring roll continuous across the 1000 s
wrap. B8: publish the ripple clock only while it rains. B7: nudge the wet
sheen half-vector off zero. B6: WORD_WINDOW batches are excluded from wet
darkening.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:56:30 +01:00
pkuzicandClaude Opus 5.5 499fdd935f MONKEY (fix-wet): seamless ripple wrap, no dry-weather churn, no sheen NaN, windows stay lit
Review B3: floor(cycle) % 50 keeps the ring roll continuous across the 1000 s
wrap. B8: publish the ripple clock only while it rains. B7: nudge the wet
sheen half-vector off zero. B6: WORD_WINDOW batches are excluded from wet
darkening.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:56:30 +01:00
pkuzicandClaude Opus 5.5 76cee36b2c MONKEY (fix-post): bloom keeps the base image; window gain on the light term only
Review P4: emissive_boost now lifts only above a 0.6 knee (equal to the old
gain at 1.0), so additive spells and lava keep their look and the excess feeds
the bloom. Review P3: the window gain applies to static_gx's SIDN light term
before fog, not to the whole fogged batch. Review P6: Low-tier extract taps
scale with the quarter-size target. Review P7: excess capped at 64 (no NaN).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:55:55 +01:00
pkuzicandClaude Opus 5.5 75eb764df4 MONKEY (fix-post): bloom keeps the base image; window gain on the light term only
Review P4: emissive_boost now lifts only above a 0.6 knee (equal to the old
gain at 1.0), so additive spells and lava keep their look and the excess feeds
the bloom. Review P3: the window gain applies to static_gx's SIDN light term
before fog, not to the whole fogged batch. Review P6: Low-tier extract taps
scale with the quarter-size target. Review P7: excess capped at 64 (no NaN).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:55:55 +01:00
pkuzicandClaude Opus 5.5 bcc528d6fd MONKEY (fix-post): sun shafts fall off radially; exact sky-depth test; one MSAA sample
Review P1: the path mean lifted every clear sky pixel equally; it is now the
occlusion ratio times an aspect-corrected radial falloff from the sun.
Review P2: sky = depth <= 1e-7 (cleared / sky-pinned), no longer a nearclip-
dependent ramp. Review P5 (partial): read one MSAA sample per tap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:58 +01:00
pkuzicandClaude Opus 5.5 5854ac39c6 MONKEY (fix-post): sun shafts fall off radially; exact sky-depth test; one MSAA sample
Review P1: the path mean lifted every clear sky pixel equally; it is now the
occlusion ratio times an aspect-corrected radial falloff from the sun.
Review P2: sky = depth <= 1e-7 (cleared / sky-pinned), no longer a nearclip-
dependent ramp. Review P5 (partial): read one MSAA sample per tap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:58 +01:00
pkuzicandClaude Opus 5.5 72a0a36fe8 MONKEY (fix-sky): Enhanced/High sky mixes the Modern fog horizon into the gradient
The integration wrapped the final gamma colour in fog_sky_horizon, whose weight
is 1 at 0 deg, so the sunset glow was erased at the horizon. Mix the Modern far
fog colour into the linear gradient before the glow and stars (review A1) and
return from the SKY_FX branch; the Classic tail keeps fog_sky_horizon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:31 +01:00
pkuzicandClaude Opus 5.5 968f939883 MONKEY (fix-sky): Enhanced/High sky mixes the Modern fog horizon into the gradient
The integration wrapped the final gamma colour in fog_sky_horizon, whose weight
is 1 at 0 deg, so the sunset glow was erased at the horizon. Mix the Modern far
fog colour into the linear gradient before the glow and stars (review A1) and
return from the SKY_FX branch; the Classic tail keeps fog_sky_horizon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:31 +01:00
pkuzicandClaude Opus 5.5 512c81f43e MONKEY (fix-wind): tree exile sway rides a material marker, not MeshTag bit 18
Bit 18 aliases the top lane-weight bit and bit 12 of the interior probe slot,
so doorway units and probe-lit interior props swayed like trees. A classified
leaf batch's fade-band exile now gets marked copies of its cutout/blend
materials (clutter_fade.z bit 14, FOLIAGE_WIND_MARKER, not a key axis) and
wow_model.wgsl sways only those.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:08 +01:00
pkuzicandClaude Opus 5.5 57e21bfc2a MONKEY (fix-wind): tree exile sway rides a material marker, not MeshTag bit 18
Bit 18 aliases the top lane-weight bit and bit 12 of the interior probe slot,
so doorway units and probe-lit interior props swayed like trees. A classified
leaf batch's fade-band exile now gets marked copies of its cutout/blend
materials (clutter_fade.z bit 14, FOLIAGE_WIND_MARKER, not a key axis) and
wow_model.wgsl sways only those.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:08 +01:00
pkuzicandClaude Opus 5.5 f0526d610b MONKEY (fix-wind): integrate wind travel on the CPU; fixed-heading spatial phase
The wave phase was k*speed(t)*t (its rate grows with session age: ~33 Hz noise
after 10 min) and its spatial term rotated about the world origin with the veer
(hundreds of rad/s at 9k yd from the first second). Now update_wind integrates
travel += speed*dt in f64 and publishes it wrapped at 4096 yd (wind_b.x); every
wave rate is a whole number of cycles per wrap, so the wrap is seamless. The
spatial term uses the fixed profile heading (wind_a.z); the veer and gust turn
only the bend. Capture offset WOW_CAPTURE_WIND_T for late-session shots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:07 +01:00
pkuzicandClaude Opus 5.5 5f7237aa98 MONKEY (fix-wind): integrate wind travel on the CPU; fixed-heading spatial phase
The wave phase was k*speed(t)*t (its rate grows with session age: ~33 Hz noise
after 10 min) and its spatial term rotated about the world origin with the veer
(hundreds of rad/s at 9k yd from the first second). Now update_wind integrates
travel += speed*dt in f64 and publishes it wrapped at 4096 yd (wind_b.x); every
wave rate is a whole number of cycles per wrap, so the wrap is seamless. The
spatial term uses the fixed profile heading (wind_a.z); the veer and gust turn
only the bend. Capture offset WOW_CAPTURE_WIND_T for late-session shots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:07 +01:00
pkuzicandClaude Opus 5.5 f13a7c9ead MONKEY (skybox): WOW_SKYBOX_T capture clock for animated skies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:48:19 +01:00
pkuzicandClaude Opus 5.5 a2dfdd814d MONKEY (skybox): WOW_SKYBOX_T capture clock for animated skies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:48:19 +01:00
pkuzic 0c2e40fd3e MONKEY (integration): document recovered wind framing 2026-09-25 16:43:50 +01:00
pkuzic 2fac056fbe MONKEY (integration): document recovered wind framing 2026-09-25 16:43:50 +01:00
pkuzicandClaude Opus 5.5 c97ecc1123 MONKEY (skybox): pose captures at t = 0, higher Hyjal viewpoint
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:39:11 +01:00
pkuzicandClaude Opus 5.5 d1a49bd15e MONKEY (skybox): pose captures at t = 0, higher Hyjal viewpoint
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:39:11 +01:00
pkuzicandGPT-5.6 Sol (Codex) 26e286db1c MONKEY (integration): weld the wind preset observer
Foliage wind is a lighting-preset member but bypasses VideoConfig. Read back its world resource in the shared preset clamp test so the merged row is covered like every other member.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 16:09:41 +01:00
pkuzicandGPT-5.6 Sol (Codex) fd2e06bb84 MONKEY (integration): weld the wind preset observer
Foliage wind is a lighting-preset member but bypasses VideoConfig. Read back its world resource in the shared preset clamp test so the merged row is covered like every other member.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 16:09:41 +01:00
pkuzicandGPT-5.6 Sol (Codex) eef0083236 MONKEY (lampfog): add options and visual proofs
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 16:01:28 +01:00
pkuzicandGPT-5.6 Sol (Codex) 9429d506d9 MONKEY (lampfog): add options and visual proofs
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 16:01:28 +01:00
pkuzicandGPT-5.6 Sol (Codex) b96b9deb59 MONKEY (lampfog): scatter resolved lamps through fog
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 16:01:14 +01:00
pkuzicandGPT-5.6 Sol (Codex) 4456da5aac MONKEY (lampfog): scatter resolved lamps through fog
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 16:01:14 +01:00
pkuzicandGPT-5.6 Sol (Codex) d601f97a7d MONKEY (integration): keep one WarcraftXL credit table
Remove merge-time blank separators so the water, post, sky, and wind attribution rows remain in the single required table.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 15:55:20 +01:00
pkuzicandGPT-5.6 Sol (Codex) bfd10f81fd MONKEY (integration): keep one WarcraftXL credit table
Remove merge-time blank separators so the water, post, sky, and wind attribution rows remain in the single required table.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 15:55:20 +01:00
pkuzicandGPT-5.6 Sol (Codex) c94f28996f MONKEY (integration): restore the verified wind framing
The wind lane's unverified closer handoff coordinates put the capture camera inside a Goldshire building. Restore the open-grass coordinates used by the lane's successful before/after captures.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 15:44:54 +01:00
pkuzicandGPT-5.6 Sol (Codex) 66054f24fd MONKEY (integration): restore the verified wind framing
The wind lane's unverified closer handoff coordinates put the capture camera inside a Goldshire building. Restore the open-grass coordinates used by the lane's successful before/after captures.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 15:44:54 +01:00
Sam SungandClaude Opus 5.5 2accb2489a Comments in benilla-app, capture, sound, net, spells and portraits: one line of fact each, no history, no record numbers (#345)
Part of #41: the fourth of five `benilla-app` pieces. This one is capture and its probes, sound, the network layer and remote movement, spells, and portraits. Their comments are rewritten to the rule in `docs/METHOD.md`, which is what the code does and the reference fact behind it, in a line. 23,383 comment lines become 9,669.

Fixes #35. Fixes #110. Fixes #111.

- **The mechanical strip.** The citations that were only a private record number go first, and each edit is shown to be a pure removal.
- **Wrong facts corrected.** The rewrite corrects the comments that stated wrong facts. Among them:
  - The probes' run blocks pointed at tooling outside this repository; each now points at `docs/CONTRIBUTING.md`, "Running it unattended". The protocol examples show placeholders for an account's password.
  - The dismount kit's name-match string is `SpiritWolf (DONOTRENAME)` (`0x8627bc`); the stun and jump-start vocals are never dispatched, and jump-end finds no kit in the shipped data.
  - The cast bar's flash and fade step once per `OnUpdate` (`CastingBarFrame.lua:132-147`); there is no 30 Hz normalisation.
  - vmangos sends the OK cast result before the GO (`Spell.cpp:3681`, `:3715`), and a creature can levitate from a script (`boss_onyxia.cpp:679`).
  - A live unit whose model is not ready has a blank portrait in the reference (`0x519fcc`); the stand-in path is for a unit with no object.
  - Docs sitting on the wrong item, removed names, and vmangos line citations checked against the pinned revision.
- **Deviation labels.** "Deviation:" now marks only a choice with a reason. An unbuilt behaviour, or one whose reference side is untraced, says so plainly.
- **Verification.** Every file strips to identical code, apart from two test literals in `net.rs` that now use placeholder account names, and `cargo fmt --check` is clean. Six second readers compared every file old against new, restored the facts the rewrite had dropped, and checked each new citation against the code, the stock files, vmangos and the reference.

Behaviour differences the rewrite surfaced are filed as their own issues (#319, #324, #329, #330 and #331 among them). String literals are untouched; they are #92.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 21:00:07 +07:00
Sam SungandClaude Opus 5.5 b7a7f88f6b Comments in benilla-app, capture, sound, net, spells and portraits: one line of fact each, no history, no record numbers (#345)
Part of #41: the fourth of five `benilla-app` pieces. This one is capture and its probes, sound, the network layer and remote movement, spells, and portraits. Their comments are rewritten to the rule in `docs/METHOD.md`, which is what the code does and the reference fact behind it, in a line. 23,383 comment lines become 9,669.

Fixes #35. Fixes #110. Fixes #111.

- **The mechanical strip.** The citations that were only a private record number go first, and each edit is shown to be a pure removal.
- **Wrong facts corrected.** The rewrite corrects the comments that stated wrong facts. Among them:
  - The probes' run blocks pointed at tooling outside this repository; each now points at `docs/CONTRIBUTING.md`, "Running it unattended". The protocol examples show placeholders for an account's password.
  - The dismount kit's name-match string is `SpiritWolf (DONOTRENAME)` (`0x8627bc`); the stun and jump-start vocals are never dispatched, and jump-end finds no kit in the shipped data.
  - The cast bar's flash and fade step once per `OnUpdate` (`CastingBarFrame.lua:132-147`); there is no 30 Hz normalisation.
  - vmangos sends the OK cast result before the GO (`Spell.cpp:3681`, `:3715`), and a creature can levitate from a script (`boss_onyxia.cpp:679`).
  - A live unit whose model is not ready has a blank portrait in the reference (`0x519fcc`); the stand-in path is for a unit with no object.
  - Docs sitting on the wrong item, removed names, and vmangos line citations checked against the pinned revision.
- **Deviation labels.** "Deviation:" now marks only a choice with a reason. An unbuilt behaviour, or one whose reference side is untraced, says so plainly.
- **Verification.** Every file strips to identical code, apart from two test literals in `net.rs` that now use placeholder account names, and `cargo fmt --check` is clean. Six second readers compared every file old against new, restored the facts the rewrite had dropped, and checked each new citation against the code, the stock files, vmangos and the reference.

Behaviour differences the rewrite surfaced are filed as their own issues (#319, #324, #329, #330 and #331 among them). String literals are untouched; they are #92.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 21:00:07 +07:00
pkuzicandGPT-5.6 Sol (Codex) 1fc96cbf03 MONKEY (integration): account for cloud lighting ordering
The cloud FX reader is registered from CloudsPlugin in LightingConsumeSet, outside the source file inspected by the ordering census. Record that cross-file registration explicitly.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 14:47:49 +01:00
pkuzicandGPT-5.6 Sol (Codex) f14865bfd0 MONKEY (integration): account for cloud lighting ordering
The cloud FX reader is registered from CloudsPlugin in LightingConsumeSet, outside the source file inspected by the ordering census. Record that cross-file registration explicitly.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 14:47:49 +01:00
pkuzicandGPT-5.6 Sol (Codex) e96e1a5f52 MONKEY (integration): legalize composable WGSL identifiers
Naga Oil treats a trailing digit as an invalid composable-module identifier. Rename the remaining sky, water, and shadow helpers and locals without changing their calculations.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 14:47:33 +01:00
pkuzicandGPT-5.6 Sol (Codex) 827b8ab8b9 MONKEY (integration): legalize composable WGSL identifiers
Naga Oil treats a trailing digit as an invalid composable-module identifier. Rename the remaining sky, water, and shadow helpers and locals without changing their calculations.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 14:47:33 +01:00
Sam SungandClaude Opus 5.5 0fe1ea87b9 Tests, examples and run lines use placeholder credentials (#332)
Test fixtures pass "player"/"secret"; the run lines in `.cargo/config.toml`, the protocol
examples and the auth and world binaries show placeholders; the SRP probe example takes
--user and --pass instead of defaulting them. Built on macOS.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 20:10:17 +07:00