# StageMaster User Guide (Concise Edition)

> ## ⚠️ This Software Is a Test Version
>
> StageMaster is currently a **test version**, still being verified for readiness for
> professional use. Specifications may change without notice, and bugs may remain.
>
> **Before any live stage or broadcast use, always run a thorough rehearsal.**
> Please confirm operation under production conditions, using the actual equipment,
> audio/video sources, and cue data you plan to use.
>
> **The author provides no compensation whatsoever in the event of an accident.**
> See "17. Disclaimer" for details.
>
> If you notice anything during use, or encounter a bug, please contact shimada@jscf.pro.

## 1. About StageMaster

**StageMaster** is an application for time-managing the progress of a stage show,
presentation, or event.

### Supported Content
- **Text**: speech scripts, cue notes
- **Sound**: BGM, sound effects, narration
- **Video**: footage, YouTube streaming

### Two Roles
- **Master**: cue operation, editing, page management
- **Slave**: follows the Master's operation (display only by default. However, turning on
  "Sync Playback" in Preferences lets the Slave machine actually play back the Master's
  play/stop actions on itself too. See "8. Master/Slave Collaboration" for details)

---

## 2. Getting Started

### First Launch After Installation
1. **Select a language**: File > Preferences > Select Language (Japanese/English)
2. **Select a theme**: View > Style (Default/Light/Dark)
3. **Configure the timeline**: File > Preferences > Timeline Settings
   - Start time: before curtain (negative value) or after curtain (positive value)
   - End time: HH:MM:SS
   - Interval: in minutes

---

## 3. Basic Workflow

### Step 1: Create New or Load
```
Create new:   File > New   or   Cmd/Ctrl+N
Load existing file: File > Load   or   Cmd/Ctrl+O
```

### Step 2: Add a Page (Scene)
1. Click the **Append button** → a dialog appears
2. Configure the following:
   - **Page number**: entered manually (numeric, required)
   - **Title**: page name
   - **Duration**: HH:MM:SS (planned playback time)
   - **Type**: text / sound / video
   - **Stage notes**: staging instructions (Markdown supported, icon images can be inserted too)
   - **Lighting notes**: lighting instructions (Markdown supported, icon images can be inserted too)
   - **Content/File**: differs by type (see below)
3. Click **Save** → the page is added

### Step 3: Add Multiple Pages (Scenes)
Repeat the above (Append → fill in → Save)

### Icon Insertion (Stage / Lighting Notes)
The **"Insert Icon"** button below each of the Stage notes and Lighting notes fields lets
you embed an image icon in the text.

1. Add image files (PNG/JPG/GIF/WEBP/SVG) to the `StageMasterIcons` folder, which is
   created automatically in the same location as the application itself
2. Click the "Insert Icon" button below the field → a dialog shows the icons found in the folder
3. **Double-click** the icon you want to insert → it is embedded at the cursor position
   (e.g. `(~/StageMasterIcons/icon0001.png)`)
4. In the list view, the image icon is displayed inline with the text at the position where it was inserted
5. If the folder contains no images yet, the dialog shows you where the folder is located

### Step 4: Save the File
```
File > Save   or   Cmd/Ctrl+S
→ saved as a .stg file (ZIP file format)
```

### Step 5: Show Day
```
File > Load → open the saved .stg file
Start button → the progress timer begins
```

---

## 4. The Three Content Types in Detail

### 4.1 Text
**Use**: speech scripts, cue notes, slide narration

**Fields**:
- **Duration**: an estimate of the read-aloud time (auto-calculated with the "Estimate" button)
- **Content**: entered in the text area

**Markdown support**:
- `# Heading 1`, `## Heading 2`, `### Heading 3`
- `**bold**`
- `- bullet list`
- `[red]red text[/red]` (color: red/blue/green/yellow/orange/purple)
- `[text](https://...)` (link)

**Link click behavior**:
- Clicking a link in the list view opens a roughly 300×480 mini preview dialog, which
  previews the linked page right there
- Pressing the **"Output to Projector"** button at the bottom of the dialog also displays
  the same page on the external monitor (the projector window), using the same screen as
  video/YouTube projection
- Some linked sites disallow being embedded, in which case they cannot be shown in either
  the preview or the projection (e.g. X/Twitter, Google, Facebook)

**Playback**:
- Play button → starts a timer for the configured duration
- After the timer ends, it auto-advances if an auto-advance mode is configured

---

### 4.2 Sound
**Use**: BGM, sound effects, narration

**Required field**:
- **File selection**: MP3/WAV/AIFF (waveform is generated automatically on upload)

**Convenient features**:
| Feature | Description |
|---------|------|
| **Cue-in** | specify the start position (set by dragging on the waveform) |
| **Lock** | fix the cue-in position (playback resumes from the same position even after saving) |
| **Auto Cue** | automatically detect the end of a silent section |
| **Gain** | adjust output gain (in dB, per cue) |
| **Standby** | once locked, the play button becomes instant playback (shown as "Standby") |

**Meter bar**: displays the L/R channel levels

**Multi-track editing**:
You can layer multiple audio tracks onto a single cue (additional tracks). In the
per-track detail panel of the edit dialog, you can individually configure:
- **Preview player**: play back and check a single track on the spot while editing
- **In/Out trim**: specify the material's playback start/end position on the waveform
- **Fade**: set fade-in/fade-out durations

**Pan (left/right, front/back positioning)**:
You can move the sound's position over time.
- **Left/right (L/R)** and **front/back (Front/Back)** can each be specified with keyframes
  and crossfaded over time
- **Joystick pad UI**: with the X axis as left/right and the Y axis as front/back, you can
  intuitively set the position by dragging on the pad
- With 4ch/6ch output, front/back positioning is reflected as a distribution to the rear
  channels (e.g. channels 3-4)

---

### 4.3 Video
**Use**: footage, YouTube streaming

**File selection**:
- **Local**: MP4/MKV etc. (file upload)
- **YouTube**: enter a URL → streaming playback (requires an internet connection)

---

### 4.4 DAW Integration (MCU MIDI Sending)

**Use**: send a MIDI command such as "start recording" to an external DAW (recording/audio
software) in sync with a cue's playback start (can be configured on any page, regardless of type)

**Fields** (on each page row in the list, next to the auto-advance icons 🔁/🎯/⏭):
- **DAW name**: chosen from the running DAWs (label only — it does not affect the destination port)
- **Action**: Play / Record / Stop (cannot be selected while DAW name is left "(not set)")

**Behavior**:
When this cue's playback starts, a Mackie Control Universal (MCU) format MIDI command
corresponding to the chosen action is sent to the single MIDI output port configured in
Preferences. This is not a feature that switches the destination port per DAW.

**Advance preparation required**:
The app itself does not create a virtual MIDI port. In advance, create a virtual MIDI port
— the IAC Driver in "Audio MIDI Setup" on macOS, or loopMIDI etc. on Windows — and assign
that port to the DAW's MCU control surface input. For selecting the port itself, see
"14. Changing Settings."

---

## 5. Playback Control

### Using the Play Button

**First click**: starts playback
- Text: starts the timer
- Sound/Video: starts playback

**Clicking during playback**:
- The button changes to "⏸" → pause
- **First click shows a yellow warning** → **second click confirms it** (prevents accidental operation)

**Stop button "⏹"**:
- Same two-step confirmation (first = warning → second = confirmed)

### Frame Controls (Sound/Video)
- **−1F button**: rewinds by 1/30 second
- **+1F button**: advances by 1/30 second
- Can be held down for continuous operation

---

## 6. Auto-Advance (For Rehearsal)

### Three Modes

| Mode | Symbol | Behavior | Example use |
|------|--------|------|--------|
| **Loop** | 🔁 | replays the same page repeatedly | standby BGM, slideshow |
| **Goto** | 🎯 | jumps to a specified page number | conditional branching, returning to a specific scene |
| **Next** | ⏭ | auto-advances to the next page | proceeding in order |

### How to Configure
Click a page's auto-advance button (🔁 / 🎯 / ⏭)
- **First click**: turns the mode ON
- **Second click**: turns the mode OFF (back to none)
- When Goto is selected: specify the destination page number in the adjacent numeric field

### Important Restriction
**While the progress timer is running via the Start button, auto-advance (all three modes —
Loop/Goto/Next) is disabled**
- Reason: a safety measure to prevent unintended automatic transitions during the show
- Pressing Stop restores auto-advance for rehearsal use
- ⚠️ This restriction applies only to the three modes above. "Auto-Execute," described
  below, has a similar name but is a separate feature — it works **only while Start is
  active**, the opposite condition (be careful not to confuse the two)

### The Difference Between Auto-Advance and Auto-Execute (similar names — be careful)

Each page row has an "Auto-Execute" checkbox, separate from the auto-advance buttons
(🔁/🎯/⏭). Both are "trigger the next action automatically" features, but they operate
under opposite conditions.

| | Auto-Advance (🔁/🎯/⏭) | Auto-Execute (checkbox) |
|---|---|---|
| When it operates | Only while **Start is OFF** (during rehearsal) | Only while **Start is ON** (the show's progress timer is running) |
| What it does | Decides how to connect to the next page once this page's playback/timer ends (loop / move to a specified page / go to next) | The instant the elapsed time since Start (or the pre-show countdown) reaches this page's scheduled position on the timeline, it automatically presses the Play button |
| Where to configure it | The 🔁/🎯/⏭ buttons on each page row | The "Auto-Execute" checkbox on each page row |

---

## 7. Keyboard Operations

| Key | Function | Note |
|------|------|------|
| **↑ Up arrow** | move selection to the previous page | |
| **↓ Down arrow** | move selection to the next page | |
| **Spacebar** | toggle play/stop for the selected page | Master role only |
| **Cmd/Ctrl+N** | new document | |
| **Cmd/Ctrl+O** | load file | |
| **Cmd/Ctrl+S** | save file | |

---

## 8. Master/Slave Collaboration (Live Operation)

### Switching Roles

**Master (in charge of running the show)**:
1. Click the "Master" button in the header (default)
2. Operate as usual

**Slave (in charge of remote display)**:
1. Click the "Slave" button in the header
2. A dialog to enter the Master's IP address appears
3. Enter e.g. `192.168.0.10` → OK
4. Connects automatically (retries roughly every 3 seconds)

### What the Slave Displays
- The Master's page list
- Real-time follow-along of playback status and the selected row
- Waveform, timecode, meter bar (reference display)
- **Manual operation is not possible** (operation buttons such as Append/Delete/Start are disabled)

### Sync Playback (having the Slave machine actually play audio/video too)

By default, as described above, the Slave is "display only" and produces no audio or
video of its own. Turning on **"Slave performs sync playback"** in File > Preferences
switches to a mode where the Slave machine actually executes the Master's play/pause/stop/
stop-all actions itself, and **actually plays the audio or video** (e.g. simultaneous
playback across multiple venues or multiple screens).

**Prerequisites for using sync playback**:
- The same source files (with the same file names) as the Master must also be present on
  the Slave machine
- Sync playback is not possible if the required source files are missing or the file names don't match
- Sync playback is turned on/off individually per machine (Master/Slave) in Preferences

### Chat Feature
- **Bidirectional between Master and Slave**: message input field at the bottom center
- **Messages from the other side**: displayed prominently, large, in the center, as an alert
- Stays on screen until manually closed

---

## 9. File Management

### Save Format (.stg)
- A **ZIP-compressed file** (includes audio and video as well)
- Automatically converts to relative paths on save (supports playback on a different PC)

### Auto-Saved Files
| File | Contents | Save location |
|---------|------|--------|
| **data.json** | the last cue sheet opened | user data folder |
| **config.json** | timeline settings | user data folder |
| **settings.json** | language/theme settings | user data folder |

**Save locations**:
- macOS: `~/Library/Application Support/StageMaster/`
- Windows: `%APPDATA%\StageMaster\`
- Linux: `~/.config/StageMaster/`

---

## 10. Screen Overview

### Header
- **Title**: StageMaster
- **Master/Slave button**: switches roles
- **Status display**: connection status

### Main Operation Area
| Button | Function |
|--------|------|
| **Start** | starts the progress timer |
| **Stop** | stops the progress timer (two-step confirmation) |
| **Append** | adds a new page |
| **Load** | loads a file |
| **Save** | saves the file |
| **Delete** | deletes a page (only active once a deletion target is selected) |

### Each Page Row's Background Color
The header area of each page row in the list (next to the Edit button) has a **color
picker**. Clicking it and choosing a color immediately reflects it as that page row's
background color. The chosen color is saved (kept in the .stg file) and persists the next
time the file is loaded. This is intended for color-coding individual pages — e.g. "this
page is a blackout" or "needs attention" — so they're easier to spot in the list during the show.

### Blacking Out the External Monitor
Selecting View > **Blackout External Monitor** overlays the external monitor's display
(the projection window) with black, instantly blacking it out. Selecting it again removes
the overlay and restores the original display (video/YouTube/web link projection, etc.).
Video and narration playback itself is not stopped — this only hides what's visible, so
whatever was playing is still there when you turn the blackout off.

### Main Commands in the File Menu

| Command | Function |
|---------|------|
| **Preferences** | settings for the timeline, audio output, DAW integration (MIDI), Slave sync playback, and more |
| **Channel Mixer** | a tool that combines up to three stereo audio files per channel, burning in a test tone as well, to export a file for multi-channel verification (for creating a new file only — a separate feature from the 4ch/6ch routing settings used during live playback) |
| **Master Meter** | shows the master (final stage) level meter at all times in a separate window |
| **Data Folder** | opens the folder containing the saved data |

### Time Display (4 lines)
```
Elapsed 00:00:00              ← time elapsed since the timer started
Remaining --:--:--             ← time remaining until the configured end time
00:00:00                       ← the current wall clock time
Predicted end time: --:--      ← the predicted end time
```

### Timeline
- Can be scrolled horizontally
- Each page is shown as a bar (duration = the bar's width)
- The current-position marker (a black vertical line) can be dragged to adjust the time

---

## 11. Troubleshooting

### Q: An audio file doesn't play
- **Things to check**
  1. The file format (MP3/WAV/AIFF are supported)
  2. Windows/macOS use the bundled native playback engine (StageMaster CLI) by default.
     mpv is not used (it's only a fallback for the Linux build, or for the abnormal case
     where the bundled executable cannot be found). If you're prompted to install mpv,
     one of those situations has occurred
  3. Whether the file path contains Japanese characters or special characters

### Q: The Slave can't connect
- **Things to check**
  1. Whether the Master's IP address is correct (check with `ipconfig`/`ifconfig`)
  2. Firewall settings (whether port 5963 is allowed through)
  3. Whether both machines are on the same network
  4. It will automatically retry after a few seconds

### Q: No sound / nothing plays with the Slave's sync playback

- **Things to check**
  1. Whether "Slave performs sync playback" is turned ON on the Slave machine's side, in Preferences
  2. Whether the Slave machine has the same source files as the Master, under the same file
     names (sync playback is not possible if they can't be found)
  3. Whether the Master's and the Slave's respective audio output device settings (see
     Chapter 14) match each machine's actual hardware configuration

### Q: A YouTube playback error
- **Things to check**
  1. Check the internet connection
  2. Whether the YouTube URL is correct
  3. Confirm playback in rehearsal before the show (watch out for connection drops during
     the show, and for playback restrictions on YouTube's side)

### Q: "File not found" when saving a file
- **Cause**
  - the audio/video file was moved or deleted from its original location
- **Fix**
  - open the relevant page with Edit, re-select the file → save

---

## 12. Common Usage Scenarios

### Scenario 1: Running a Lecture Event
1. Mix Text (running script) + Sound (pre-show BGM) + Video (keynote footage)
2. Auto-advance: set to Next to proceed in order
3. Lock the cue-in position for each audio clip
4. Manage show timing with Start

### Scenario 2: Rehearsal
1. Test auto-advance with the Start button OFF
2. Verify conditional branching with Loop/Goto
3. If there's an issue, fix it with Edit → test again

### Scenario 3: Syncing Multiple Venues
1. Run the show from the Master machine
2. Synchronized display on each screen/operator console via Slave machines
3. Communicate between threads using the chat feature

---

## 13. Keyboard Shortcuts

```
Cmd/Ctrl+N     New document
Cmd/Ctrl+O     Load file
Cmd/Ctrl+S     Save file
↑              Select previous page
↓              Select next page
Space          Play/stop the selected page (Master only)
```

---

## 14. Changing Settings

### Changing the Language
```
File > Preferences > Select Language
→ choose Japanese / English → reflected across the entire screen immediately
```

### Changing the Theme
```
View > Style
→ choose Default / Light / Dark
```

### Reconfiguring the Timeline
```
File > Preferences > Timeline Settings
→ change the start time, end time, and interval
```

### Configuring 4ch/6ch (Multi-Channel) Output
```
File > Preferences > Audio Settings
→ Number of output channels: 2ch / 4ch / 6ch
→ Output device (for multi-channel): choose from the list
```

This feature sends 4ch/6ch source material (channels 1-2-3-4, or 1-2-3-4-5-6) straight
through to the corresponding channels on the output interface.

- **Number of output channels = 2ch (default)**: even with 4ch/6ch material, only channels
  1-2 are sent. Channels 3 and beyond are not mixed down into channels 1-2 (automatic
  downmixing is explicitly avoided)
- **Number of output channels = 4ch/6ch**: when the material's channel count matches the
  output setting, all channels are sent straight through to the same-numbered output channels

The material's channel count is auto-detected from the WAV/AIFF header (mp3 is always
treated as 2ch, since it tops out at 2ch by spec). Ordinary 2ch material's behavior never
changes regardless of this setting. Separated output up to 6 channels has been confirmed
on real hardware even on a 20-channel-class interface (e.g. TASCAM US-20x20).

**Always explicitly select the output device.** It will still work if left on "the
system's default output," but it will break if the OS's default output changes before the show.

> **⚠️ Restart the application after changing this setting.**
> Changing "number of output channels" or "output device" does not take effect for a
> source that is already in a standby state (a locked cue). This is because standby
> begins waiting using the state that existed before the setting was changed.
> **After changing an audio setting, always restart the application before checking it
> and going into the show.**

#### Prerequisites for Multi-Channel Output on Windows

The Windows build uses the native audio engine by default (ASIO preferred, WASAPI as a
fallback). The **VoiceMeeter-based setup required in earlier versions is now generally
unnecessary.**

1. Install the **ASIO driver** for the audio interface you're using
2. In StageMaster's Preferences, from the output device list, directly choose **that
   interface's ASIO device** (the display name will include the channel count, e.g. `(ASIO, 4ch)`)

Windows has no concept of a "default ASIO," so if nothing is chosen, the default becomes a
2ch WASAPI endpoint. **To use 4 or more channels, you must explicitly select the ASIO
device in Preferences.** The same hardware may appear in the list under both an ASIO name
and a WASAPI name — for multi-channel use, choose the ASIO one.

Only when more advanced routing is needed — for example, verifying a configuration with
more than 8 channels — can the traditional method of going through VoiceMeeter (Virtual ASIO) also be used.

#### Prerequisites for Multi-Channel Output on macOS

1. In "Audio MIDI Setup," create an **"Aggregate Device"** that includes the interface
2. In StageMaster's Preferences, choose that aggregate device as the output device

Selecting the interface on its own directly can result in channels 3 and beyond not being
output, and getting mixed into channels 1-2 instead.

#### If the Setting Is Not Correct

If the above prerequisites are missing, **sound plays normally, but is downmixed to 2ch**.
StageMaster detects this and displays a warning (once per app launch). If the warning
appears, check the output device selection and the prerequisites above.

> **Always confirm multi-channel playback in rehearsal before the show.** Because sound
> still plays even when downmixed, you won't notice unless you check. Confirm not just by
> ear, but also that each channel is registering a signal on the **physical meters on the
> audio interface itself**.

### Configuring the DAW Integration (MIDI) Output Port

```
File > Preferences > DAW Integration (MIDI)
→ MIDI output port: choose from the list
```

The Play/Rec/Stop settings configured on each page (see "4.4 DAW Integration") are sent as
Mackie Control Universal (MCU) format commands to the MIDI output port chosen here. In
advance, create a **virtual MIDI port** — the IAC Driver in "Audio MIDI Setup" on macOS, or
loopMIDI etc. on Windows — and assign that port to the DAW's MCU control surface input
(the app itself does not create a virtual port). If nothing appears in the list, either no
virtual MIDI port has been created, or StageMaster has not been granted access to MIDI.

---

## 15. Support Information

### Checking the Data Save Location
```
File > Data Folder
→ check data.json / config.json using the OS's file manager
```

### Version Information
```
Help > About StageMaster
→ shows the Node.js / Chromium / Electron versions
```

---

## 16. Contact / Complaints

If you have questions, feature suggestions, or bug reports, please feel free to get in touch.

📧 **Contact:** shimada@jscf.pro

Feedback received will be used to improve StageMaster going forward.

---

**Thank you for using StageMaster.**

For anything not covered in this guide, please check config.json via "Data Folder" at the
bottom right of the screen, or refer to the in-app help.

---

## 17. Disclaimer

### 17.1 How the Software Is Provided; It Is a Test Version

StageMaster (hereinafter "this Software") is provided "AS IS." The author makes no
warranties of any kind, whether express or implied, including but not limited to
merchantability, fitness for a particular purpose, and non-infringement. The author does
not warrant that this Software will operate without interruption or that it is free of errors.

**This Software is currently a test version.** It is still being verified for readiness
for professional use; specifications may change without notice, and bugs may remain.

### 17.2 Limitation of Liability; Disclaimer of Compensation

**The author provides no compensation whatsoever for any accident or damage arising in
connection with the use of this Software.**

The author is not liable for any damages arising from the use or inability to use this
Software, including but not limited to:

- Failure to play back, interruption of playback, or unintended output of audio or video
  during a performance, broadcast, or event
- Corruption or loss of audio/video source material, cue data (data.json), or settings (config.json)
- Malfunction or damage to connected equipment such as audio interfaces
- Business losses, lost opportunities, and liability to third parties arising from the above

### 17.3 User Responsibility

**This Software is intended for use in live stage and broadcast productions, but it does
not guarantee the success of any performance or broadcast.**

**Before any production use, always run a thorough rehearsal.** Please confirm operation
under production conditions, using the actual equipment, audio/video sources, and cue data
you plan to use. The following in particular require caution, **because they will appear
to work normally at a glance even if misconfigured**:

- **4ch/6ch (multi-channel) output**: if misconfigured, sound still plays but is downmixed
  to 2ch (see Chapter 14, "Configuring 4ch/6ch (Multi-Channel) Output")
- **After changing an audio setting**: the application must be restarted
- **Paths to audio/video files**: playback will fail if a file is moved or renamed

Depending on the nature and scale of the production, we also strongly recommend preparing
backup means that do not depend on this Software (such as a spare playback device).

### 17.4 License for This Software

This Software is provided under the **Apache License, Version 2.0**. The full text of the
license is bundled at `LICENSE-StageMaster-Apache-2.0.txt` in the `licenses` folder at the
installation location.

```
Copyright (c) 2026 Masao Shimada

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```

### 17.5 Third-Party Software

This Software bundles and makes use of the following open-source software. These are
separate pieces of software from this Software, and each is subject to its own license.
The author bears no responsibility for their behavior. A full breakdown is provided in
`NOTICE.txt`, in the `licenses` folder at the installation location.

- **Electron / Chromium / Node.js** — MIT License, among others
- **adm-zip** (reads/writes the .stg save-file ZIP format) — MIT License
- **ws** (Master/Slave networking) — MIT License
- **[Windows build only] NAudio 3.0.0** (ASIO/WASAPI output for the native audio engine, StageMaster.exe) — MIT License
- **[Windows build only] .NET runtime** (bundled self-contained inside StageMaster.exe) — MIT License

The ASIO drivers for each audio interface, and **VoiceMeeter** (provided by VB-Audio
Software), which may be used for verifying configurations with more than 8 channels, are
not included with this Software. Users must obtain and install these themselves, and the
author bears no responsibility for their behavior either.

### 17.6 Copyright of Source Material

Any rights clearance for the audio/video source material played back with this Software is
the user's own responsibility. If using the YouTube playback feature, please comply with
YouTube's Terms of Service. The author bears no responsibility whatsoever for rights
infringement by a user.

### 17.7 Export Control

When exporting, re-exporting, or providing this Software, please comply with all applicable
export control laws and regulations, including Japan's Foreign Exchange and Foreign Trade
Act. The user agrees not to provide this Software to any country or region subject to
economic sanctions or an embargo, or to any individual or entity with whom transactions are prohibited.

### 17.8 Governing Law

This disclaimer is governed by, and shall be interpreted in accordance with, the laws of
Japan. However, where a mandatory provision of the law of the country or region in which
the user resides as a consumer exists that cannot be excluded by contract, that provision
shall take precedence.

---

**Author: Masao Shimada**
**Contact: shimada@jscf.pro**

**Version 1.2 — August 19, 2026**
