The Clash name and its evolving ecosystem
Clash established a way to manage proxy connections using configuration files, rules, and policy groups. After the original project and some early GUI clients stopped being maintained, the community continued developing cores and interfaces around the configuration ecosystem. Today, a search for Clash may turn up legacy projects, successor cores, and clients for different platforms. They aren't all maintained by the same team.
Before following an older guide, check which client and core it covers. Similar-looking switches may work differently, and older projects may not support newer configuration fields. For everyday use, choose a maintained client, keep a copy of your original config, and migrate using current documentation rather than relying on old screenshots.
How Mihomo and GUI clients work together
Mihomo is a proxy core in the Clash ecosystem. It handles configuration parsing, rule matching, outbound connections, and related network features. GUI clients typically display profiles, policy groups, logs, and settings, and coordinate core startup and system traffic routing. An open window doesn't mean the core is running; a running core doesn't mean app traffic is being routed through it.
Troubleshoot in layers: check whether the configuration loads, whether the listening port is open, and finally whether the system proxy or TUN covers the app in question. Clients may use different core builds and defaults. When a feature is missing, check the capabilities of the core actually in use rather than relying on the client name.
How to explore open-source resources
Open-source repositories are useful for reviewing implementation details, licenses, release notes, and known issues. The command below only clones Mihomo's source code; it's for users who want to read the code or prepare a build environment. You don't need to clone the repository for a regular installation—just choose a GUI client from the download page. Follow the project's own instructions for build steps.
Before filing an issue, search existing discussions with specific keywords and gather your operating system, client name, reproduction steps, and relevant logs. Remove subscription URLs, account parameters, and private server details before sharing anything publicly. Community discussions can explain behavior, but don't apply experimental settings from a single thread to every device.
Update the app, core, and subscription separately
A client update may change the interface or system integration. A core update may change protocol support or how configuration fields are handled. A subscription update mainly changes nodes, policies, and rule sources. These are separate things: a successful subscription refresh doesn't update the app, and reinstalling the client won't fix an expired subscription URL or remote service.
Before updating, note the active profile and key settings, then read the release notes. If something breaks afterward, first determine whether the app fails to start, the configuration fails to parse, or a specific connection fails. For migration tips, see the guide to discontinued clients. For port, DNS, and timeout issues, follow the troubleshooting manual step by step.