# How to Report a Bug in Everyone-Can-Use-English: Built-In Methods Explained

> Learn how to report a bug in Everyone-Can-Use-English via the Help menu or programmatically. Submit issues effortlessly with pre-filled GitHub links.

- Repository: [Zuodao/everyone-can-use-english](https://github.com/ZuodaoTech/everyone-can-use-english)
- Tags: how-to-guide
- Published: 2026-08-14

---

**You can report a bug in Everyone-Can-Use-English using either the Help menu's "Report an Issue" option or by invoking the `app-create-issue` IPC channel programmatically.** Both methods open a pre-filled GitHub issue page in your default browser.

Everyone-Can-Use-English is an open-source English learning application by ZuodaoTech. Knowing how to report a bug effectively helps maintainers diagnose and fix issues faster. The application provides native integrations that streamline this process directly from the app's interface.

## Using the Help Menu to Report a Bug

The simplest way to report a bug is through the application's native menu system.

### Step-by-Step Menu Navigation

1. Open the Everyone-Can-Use-English main window
2. Click **Help** in the menu bar
3. Select **"Report an Issue"**

This triggers Electron's `shell.openExternal` to launch `https://github.com/ZuodaoTech/everyone-can-use-english/issues/new` in your default browser, as implemented in [`enjoy/src/main/window.ts`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/src/main/window.ts) at lines 845-849.

The menu template that enables this functionality:

```typescript
// From enjoy/src/main/window.ts
{
  label: "Help",
  submenu: [
    {
      label: "Report an Issue",
      click: () => shell.openExternal(`${REPO_URL}/issues/new`)
    },
  ],
}

```

## Programmatic Bug Reporting via IPC

For developers extending the application or triggering reports from custom UI components, the `app-create-issue` IPC channel provides programmatic access.

### Calling from Renderer Process

Any renderer component can invoke this channel to open a pre-filled issue with diagnostic information:

```typescript
import { ipcRenderer } from "electron";

function reportBug(title: string, logs?: string) {
  ipcRenderer.invoke("app-create-issue", title, logs ?? "");
}

// Example usage:
reportBug(
  "Crash when importing audio file",
  "Error stack:\n    at parseAudioMetadata\n    at importFileHandler\n    ..."
);

```

The main process handler at [`enjoy/src/main/window.ts`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/src/main/window.ts) (lines 58-80) constructs the issue body with:

- **Application version** — fetched from `app.getVersion()`
- **Platform details** — OS, architecture, and Electron version
- **Optional log output** — passed from the renderer for context-specific debugging

### What the Main Process Handler Does

When `app-create-issue` is invoked, the main process:

1. Assembles diagnostic metadata
2. URL-encodes the pre-filled title and body
3. Opens the constructed GitHub URL via `shell.openExternal`

This ensures every bug report includes consistent environmental information, reducing back-and-forth between reporters and maintainers.

## Understanding the Repository URL Configuration

The issue links rely on `REPO_URL` exported from [`enjoy/src/constants/index.ts`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/src/constants/index.ts). This centralized constant prevents hardcoded strings and ensures all bug-reporting features point to the correct repository.

The resolved URL pattern is:

```

https://github.com/ZuodaoTech/everyone-can-use-english/issues/new?title=...&body=...

```

## Completing Your GitHub Issue

After either method opens your browser, complete these fields for an effective bug report:

- **Title** — Clear, concise description of the problem
- **Body** — Steps to reproduce, expected vs. actual behavior, screenshots if applicable
- **Labels** — Select appropriate labels if you have permissions

The pre-populated version and platform data from the programmatic method appears automatically in the body field.

## Summary

- **Menu method**: Click **Help → Report an Issue** for quick manual reporting
- **IPC method**: Invoke `ipcRenderer.invoke("app-create-issue", title, logs)` from any renderer component to include diagnostic data
- **Core implementation**: Located in [`enjoy/src/main/window.ts`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/src/main/window.ts) with constants from [`enjoy/src/constants/index.ts`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/src/constants/index.ts)
- **Target URL**: `https://github.com/ZuodaoTech/everyone-can-use-english/issues/new`

## Frequently Asked Questions

### Can I report a bug without using the built-in menu?

Yes. You can manually navigate to `https://github.com/ZuodaoTech/everyone-can-use-english/issues/new` in any browser. The built-in methods simply pre-fill helpful diagnostic information automatically.

### What information is included in programmatic bug reports?

The `app-create-issue` handler includes application version, operating system, platform architecture, and Electron version. You can optionally append custom log output or error stack traces as the second parameter.

### Where can I find the source code for the bug reporting feature?

The IPC handler and menu definition reside in [`enjoy/src/main/window.ts`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/src/main/window.ts). The repository URL constant is defined in [`enjoy/src/constants/index.ts`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/src/constants/index.ts). These files handle both the menu-driven and programmatic reporting flows according to the Everyone-Can-Use-English source code.