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

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 at lines 845-849.

The menu template that enables this functionality:

// 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:

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 (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. 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 with constants from 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. The repository URL constant is defined in 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.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →