# Manual GUI Smoke Checklist

Date: 2026-06-20

This checklist is for visible GUI inspection only. It is not a hardware
playback test and should not be automated by opening devices.

## Viewports

Run the visible GUI smoke at:

- 1280 x 760, Windows display scaling 100%.
- 1280 x 760, Windows display scaling 125%.
- 1366 x 768, Windows display scaling 100%.
- 1366 x 768, Windows display scaling 125%.
- 1920 x 1080, Windows display scaling 100%.
- 1920 x 1080, Windows display scaling 125%.

## Checks

- `--smoke` exits before the GUI, Direct3D, device enumeration, stream
  initialization, or playback.
- The main GUI opens in Japanese, light theme, and the first visual impression
  is calm and support-tool-like rather than developer-demo-like.
- The Japanese font status is visible; if Yu Gothic/Yu Gothic UI or Meiryo
  cannot be loaded, a visible ASCII/English fallback warning appears.
- Switch the UI language to English and verify that no application-owned
  visible screen text remains Japanese in the top controls, tabs, tab content,
  bottom action bar, tooltips, or language selector. Device
  names and raw driver-supplied strings are the only intended exception.
- While English is selected, the language selector displays `Japanese` and
  `English`, not `日本語`.
- The main workflow is split into `出力経路`, `テスト条件`, and `ログ` tabs.
- The Output Path tab starts with API selection and API-scoped refresh, then
  device selection, automatic compatibility check, and matrix selection.
- Selecting a device automatically checks compatibility for that selected
  API/device. There is no primary manual `対応状況をスキャン` action in the main
  workflow.
- The flow requires a selectable matrix cell before `選択条件で開始`.
- Low-level controls such as raw backend IDs, channel mask, stress/
  reinitialize planning, and risky-release acknowledgement remain inside the
  same flow and do not provide a separate format-first start path.
- The main GUI opens to `出力経路`.
- The top status ribbon is visible without overlapping text.
- The next-required-action banner is visible.
- The tab bar shows `出力経路`, `テスト条件`, and `ログ` with clear active-tab
  contrast.
- Each tab uses a purpose-built layout rather than simply stacking the old
  panel sections. Descriptive copy is muted; input fields, tables, tabs, and
  action buttons have visibly stronger borders or fills.
- The Logs tab shows realtime counters, log tabs, error summary, and export
  action without clipping essential labels.
- The bottom action bar shows refresh/start/stop/release/export actions in the
  selected UI language. The stop button reads `信号停止 / 保持` in Japanese or
  `Stop signal / hold` in English, and its tooltip explains that release is a
  separate action after signal stop. These actions stay on one row.
- Device list uses a compact table with Japanese column labels for status,
  default marker, output device, and action. API and full ID are shown in the
  selected-device summary rather than repeated in every row.
- Kernel Streaming device rows show a friendly device/output name in the main
  device table. KS filter symbolic links and pin IDs are visible in tooltips or
  selected-device details, not as the dominant row label.
- Long device IDs are not shown in the device table and remain copyable from
  the selected-device summary.
- Copy ID works after selecting a device.
- When Kernel Streaming is the selected API, a visible non-modal warning
  explains that KS scans open filters and inspect pins/data ranges, do not play
  audio, and may temporarily make some drivers report the device as in use.
- The capability matrix heading is compatibility-oriented, such as
  `対応状況マトリックス` / `Compatibility Matrix`, and does not imply that every
  selectable candidate has already been confirmed playable.
- The capability matrix is scoped to the selected target API and is split into
  PCM and DSD tables. Each table shows bit/format rows against sample-rate
  columns, including unsupported and not-applicable cells. Verify both remain
  readable at 1280 x 760 and 125% scaling, with horizontal scrolling rather
  than collapsed vertical text.
- PCM and DSD matrix row labels should not wrap by default. The PCM table must
  keep 1536 kHz columns readable; the DSD table must use simplified DSD64
  through DSD2048 column labels rather than real DSD sample rates.
- The UI does not ask for a playback format before the matrix. It presents all
  candidate formats and cell results from the automatic compatibility check in
  the matrix flow.
- Matrix cell statuses include `使用可能`, `非対応`, `未確認`, `使用中`,
  `参考情報`, `要注意`, `エラー`, and `対象外` where applicable. Short cell
  labels may be used in the table when the full status is available by tooltip.
- Kernel Streaming matrix cell statuses additionally include `範囲一致`,
  `pin作成OK`, and `開始確認OK`. `範囲一致` must not be displayed as
  `使用可能`; selecting it shows the warning that pin creation and start have
  not yet been verified.
- If a KS write/release timeout occurs, the UI/log must show:
  `KS書き込みスレッドの終了待ちがタイムアウトしました。デバイスを安全に解放できていない可能性があります。`
  The backend must remain active/faulted for a later release retry and must not
  report `Released` while the write thread may still own the pin handle.
- Attempting to close the app while any backend is active must keep the app
  open and show:
  `再生または保持中のデバイスがあります。先に停止または解放してください。`
  If the active backend is a faulted KS backend after release timeout, the close
  guard must instead show:
  `KS書き込みスレッドの終了待ちがタイムアウトしています。安全に解放できていない可能性があります。再度、解放を試してください。`
- KS diagnostic details should show 8-digit `code_hex` values for Win32,
  HRESULT, and NTSTATUS evidence, for example `0x00000005`, `0x8889000A`, and
  `0xC00000BB`.
- After selecting a target device, applicable cells for the selected API path
  should become `使用可能`, `非対応`, `使用中`, `要注意`, `エラー`, or
  `参考情報` based on the non-playback compatibility check; they should not
  remain `未確認` simply because the device list was loaded without prior
  matrix evidence.
- Non-applicable format/API combinations should show `対象外` rather than
  remaining selectable or ambiguous.
- Start is unavailable until a current selectable matrix cell creates a
  selected test condition.
- There is no separate scan-range selector, per-API evidence table, or manual
  one-off candidate picker. Format selection is done from the capability
  matrix.
- WASAPI `GetMixFormat` reference information may be represented as
  non-selectable matrix cells; it must not become a startable test condition.
- Format selection is matrix-only. Rejected, reference, unsupported, unchecked,
  or not-applicable cells cannot become active playback formats.
- Changing a format-affecting condition visibly marks the selected test
  condition stale and blocks start/automation until the matrix is rebuilt or a
  current cell is selected.
- Verify ASIO native DSD appears only as an ASIO-applicable matrix column; MME,
  DirectSound, WASAPI shared, and WASAPI exclusive cells are `対象外`.
- Changing the target device clears the old capability matrix and selected test
  condition.
- Changing the target API clears the selected device, accepted format, and
  selected test condition. Switching between WASAPI shared and WASAPI exclusive
  requires a fresh refresh, endpoint selection, automatic compatibility check,
  and matrix selection before start is enabled.
- Changing amplitude, duration, or phase offset after selecting a test
  condition does not mark the capability matrix stale; the changed run settings
  are used and logged on the next start.
- Accepted-format state text is localized in the default Japanese UI
  (`なし`, `対応セルを選択`, `代替フォーマットを選択`,
  `近似フォーマットを選択`, `再確認が必要`).
- While any backend is active, backend/device/format changes, refresh,
  automation planning/running, and new start commands are disabled with a clear
  reason.
- Disabled action buttons explain why they are disabled by tooltip or visible
  text.
- Start remains disabled until a current selected test condition exists.
- If a Kernel Streaming backend has faulted, the release action must remain
  available so the active backend can be cleared after handles are closed.
- If Kernel Streaming is holding a `RunningSilence` keep-warm stream, Start is
  disabled with this Japanese release-required reason:
  `KS保持中ストリームからの即時信号再開は未対応です。保持中デバイスを解放してから再実行してください。`
- A long backend error such as `AUDCLNT_E_DEVICE_IN_USE` must wrap or shorten
  in the top status ribbon and must not collapse the rightmost ribbon column
  into vertical text.
- Release remains acknowledgement-gated for known-problem full-release states.
- PCM signal controls show left/right enable, right polarity inversion, and
  right phase offset only for PCM test conditions.
- DoP/native DSD views do not expose PCM-only channel controls or unsupported
  envelope controls.
- No essential controls are clipped or hidden behind the bottom action bar.
- No text overlaps adjacent controls at the tested scaling settings.
- The recent-log pane remains responsive with a long synthetic log; the full
  evidence remains available through bundle export.

## Hardware Boundary

Do not use this checklist to start playback unless a separate hardware smoke
session is explicitly approved for the selected device and backend.
