Merge pull request '1.19.1' (#7) from macdev/mac:main into main
Release / Build Equicord (push) Has been cancelled
Release Browser Extension / release (push) Has been cancelled
Test / Test (push) Has been cancelled

Reviewed-on: https://git.nightcord.ru/nightcord/mac/pulls/7
This commit was merged in pull request #7.
This commit is contained in:
2026-06-01 11:38:32 +00:00
13 changed files with 74 additions and 82 deletions
+5 -5
View File
@@ -1,5 +1,5 @@
<div align="center">
<img src="https://nightcord.su/image.png" width="96" height="96" alt="Nightcord Logo">
<img src="https://nightcord.ru/image.png" width="96" height="96" alt="Nightcord Logo">
# Nightcord
@@ -7,8 +7,8 @@
[![Discord](https://img.shields.io/badge/Discord-Join%20us-5865F2?logo=discord\&logoColor=white)](https://discord.gg/nightcord)
[![License](https://img.shields.io/badge/license-GPL%20v3-a855f7)](./LICENSE)
[![Platform](https://img.shields.io/badge/platform-Windows-3b82f6.svg?logo=windows\&logoColor=white)](https://git.nightcord.su/nightcord/nightcord)
[![Website](https://img.shields.io/badge/website-nightcord.su-5865F2?logo=googlechrome\&logoColor=white)](https://nightcord.su)
[![Platform](https://img.shields.io/badge/platform-Windows-3b82f6.svg?logo=windows\&logoColor=white)](https://git.nightcord.ru/nightcord/nightcord)
[![Website](https://img.shields.io/badge/website-nightcord.ru-5865F2?logo=googlechrome\&logoColor=white)](https://nightcord.ru)
---
@@ -40,7 +40,7 @@ Then try reopening the file again
### Clone & Build
```bash
git clone https://git.nightcord.su/nightcord/mac.git
git clone https://git.nightcord.ru/nightcord/mac.git
cd nightcord
pnpm install -r
pnpm add -D react react-dom
@@ -52,7 +52,7 @@ pnpm run package:dir
Source code:
https://git.nightcord.su/nightcord/mac
https://git.nightcord.ru/nightcord/mac
---
+2 -2
View File
@@ -565,7 +565,7 @@
<div class="titlebar">
<div class="titlebar-left">
<img src="{{ICON_BASE64}}" class="logo-mark" />
<span class="titlebar-title" style="cursor: pointer;" onclick="window.nightcord.openUrl('https://nightcord.su/')">Nightcord Installer</span>
<span class="titlebar-title" style="cursor: pointer;" onclick="window.nightcord.openUrl('https://nightcord.ru/')">Nightcord Installer</span>
<span class="titlebar-version" id="titlebar-version">...</span>
</div>
<div class="titlebar-right">
@@ -649,7 +649,7 @@
</svg>
<span>Join Discord Server</span>
</button>
<button class="btn-setting-link btn-website" onclick="window.nightcord.openUrl('https://nightcord.su')">
<button class="btn-setting-link btn-website" onclick="window.nightcord.openUrl('https://nightcord.ru')">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="btn-link-icon">
<circle cx="12" cy="12" r="10"></circle>
<line x1="2" y1="12" x2="22" y2="12"></line>
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "nightcord",
"private": "true",
"version": "1.18.9",
"version": "1.19.1",
"description": "Everything Discord doesn't build, we create",
"main": "dist/js/main.js",
"homepage": "https://github.com/nightcordoff/nightcord",
+1 -1
View File
@@ -728,7 +728,7 @@ function ThemesTab() {
/>
<Notice.Info className={Margins.bottom16} style={{ width: "100%" }}>
Looking for themes? Check out <Link href="https://nightcord.su/themes">NightCord Themes</Link> or search on <Link href="https://github.com/search?q=discord+theme">GitHub</Link>. When downloading from BetterDiscord, click "Download" and place the .theme.css file into your themes folder.
Looking for themes? Check out <Link href="https://nightcord.ru/themes">NightCord Themes</Link> or search on <Link href="https://github.com/search?q=discord+theme">GitHub</Link>. When downloading from BetterDiscord, click "Download" and place the .theme.css file into your themes folder.
</Notice.Info>
<div className={cl("link-row")}>
@@ -37,7 +37,7 @@ const KNOWN_SETTINGS_KEY = "EquicordChangelog_KnownSettings";
const LAST_REPO_CHECK_KEY = "EquicordChangelog_LastRepoCheck";
const GITHUB_COMPARE_ENDPOINT = "https://api.github.com/repos";
const NIGHTCORD_RELEASES_REPO = "nightcord/mac";
const NIGHTCORD_REPO_URL = "https://git.nightcord.su/nightcord/mac";
const NIGHTCORD_REPO_URL = "https://git.nightcord.ru/nightcord/mac";
type KnownPluginSettingsMap = Map<string, Set<string>>;
@@ -110,8 +110,8 @@ function UpdaterTab() {
<div>
<Span size="sm" color="text-subtle">Website</Span>
<div>
<Link href="https://nightcord.su" style={{ fontSize: 13 }}>
nightcord.su
<Link href="https://nightcord.ru" style={{ fontSize: 13 }}>
nightcord.ru
</Link>
</div>
</div>
+52 -60
View File
@@ -34,51 +34,57 @@ import { openNotificationSettingsModal } from "./NotificationSettings";
const cl = classNameFactory("vc-vencord-tab-");
const DEV_TEAM = [
{
id: "ahki",
name: "ahki__",
role: "Owner",
pfp: "https://i.imgur.com/gHucHbN.jpeg",
description: "Founder and owner of Nightcord."
},
{
id: "kza",
name: "Kza",
role: "Co-Owner",
pfp: "https://i.imgur.com/wqKfGyK.jpeg",
description: "Co-owner of Nightcord."
},
{
id: "attachante",
name: "attachante",
role: "Developer",
pfp: "https://i.imgur.com/R8s7Jz9.png",
description: "Developer within the Nightcord team."
},
{
id: "Fancy",
name: "Fancy",
role: "Developer",
pfp: "https://i.imgur.com/RVJ2bUG.png",
description: "Developer within the Nightcord team."
},
{
id: "Xeen",
name: "Xeen",
role: "BOT Developer",
pfp: "https://i.imgur.com/mXKUR8I.png",
description: "Bot developer for Nightcord."
},
{
id: "biemal",
name: "Biemal",
role: "WebApp Developer",
pfp: "https://i.imgur.com/8PISMQu.png",
description: "WebApp developer within the Nightcord team."
}
const DEV_TEAM_IDS = [
{ id: "1086802921984893038", role: "Owner" },
{ id: "171356978310938624", role: "Co-Owner" }
];
function useDiscordUser(userId: string) {
const [user, setUser] = React.useState<{ name: string; pfp: string; } | null>(null);
React.useEffect(() => {
const cached = UserStore?.getUser(userId);
if (cached) {
setUser({
name: cached.globalName ?? cached.username,
pfp: cached.avatar
? `https://cdn.discordapp.com/avatars/${userId}/${cached.avatar}.webp?size=128`
: `https://cdn.discordapp.com/embed/avatars/${Number(BigInt(userId) >> 22n) % 6}.png`
});
return;
}
fetch(`https://discord.com/api/v9/users/${userId}`, {
headers: { Authorization: (window as any).token ?? "" }
})
.then(r => r.json())
.then(u => setUser({
name: u.global_name ?? u.username ?? userId,
pfp: u.avatar
? `https://cdn.discordapp.com/avatars/${userId}/${u.avatar}.webp?size=128`
: `https://cdn.discordapp.com/embed/avatars/${Number(BigInt(userId) >> 22n) % 6}.png`
}))
.catch(() => setUser({ name: userId, pfp: `https://cdn.discordapp.com/embed/avatars/0.png` }));
}, [userId]);
return user;
}
function DevCard({ id, role }: { id: string; role: string; }) {
const user = useDiscordUser(id);
return (
<Card variant="primary" outline style={{ padding: "10px" }}>
<Flex align={Flex.Align.CENTER} gap="10px">
<Avatar
src={user?.pfp ?? `https://cdn.discordapp.com/embed/avatars/0.png`}
size="SIZE_48"
/>
<Flex direction={Flex.Direction.VERTICAL} style={{ flex: 1, gap: "0px" }}>
<Heading tag="h3" style={{ marginBottom: "-2px" }}>{user?.name ?? "..."}</Heading>
<Heading tag="h4" style={{ opacity: 0.6 }}>{role}</Heading>
</Flex>
</Flex>
</Card>
);
}
function DevTeamSection() {
const [showDevs, setShowDevs] = React.useState(false);
@@ -127,23 +133,9 @@ function DevTeamSection() {
to { opacity: 1; transform: translateY(0); }
}
`}</style>
{DEV_TEAM.map(dev => {
return (
<Card key={dev.id} variant="primary" outline style={{ padding: "10px" }}>
<Flex align={Flex.Align.CENTER} gap="10px">
<Avatar
src={dev.pfp}
size="SIZE_48"
/>
<Flex direction={Flex.Direction.VERTICAL} style={{ flex: 1, gap: "0px" }}>
<Heading tag="h3" style={{ marginBottom: "-2px" }}>{dev.name}</Heading>
<Heading tag="h4" style={{ opacity: 0.6, marginBottom: "2px" }}>{dev.role}</Heading>
<Paragraph size="xs" style={{ lineHeight: "1.2" }}>{dev.description}</Paragraph>
</Flex>
</Flex>
</Card>
);
})}
{DEV_TEAM_IDS.map(dev => (
<DevCard key={dev.id} id={dev.id} role={dev.role} />
))}
</div>
)}
</>
+3 -3
View File
@@ -14,9 +14,9 @@ import { join } from "path";
import { serializeErrors } from "./common";
const RELEASES_REPO = "nightcord/nightcord";
const API_BASE = `https://git.nightcord.su/api/v1/repos/${RELEASES_REPO}`;
const REPO_URL = `https://git.nightcord.su/${RELEASES_REPO}`;
const RELEASES_REPO = "nightcord/mac";
const API_BASE = `https://git.nightcord.ru/api/v1/repos/${RELEASES_REPO}`;
const REPO_URL = `https://git.nightcord.ru/${RELEASES_REPO}`;
declare const VERSION: string;
const CURRENT_VERSION = `v${VERSION}`;
const ZIP_FILE = "nightcord-dist.zip";
+1 -1
View File
@@ -46,7 +46,7 @@ const STATUS_COLOR: Record<UserStatus, string> = {
// ─── API ──────────────────────────────────────────────────────────────────────
const API_BASE = "https://api.nightcord.su/api";
const API_BASE = "https://api.nightcord.ru/api";
interface PrevNameEntry {
timestamp: number;
@@ -166,14 +166,14 @@ export const PluginCards = ErrorBoundary.wrap(function PluginCards({ message }:
}
}
// Process components — NightCord Bot (nightcord.su, Component v2 Container format)
// Process components — NightCord Bot (nightcord.ru, Component v2 Container format)
if (message.author.id === NIGHTCORD_BOT_USER_ID) {
const containerComponents = (message.components?.[0] as any)?.components;
if (containerComponents?.length >= 3) {
// Find ActionRow by presence of nested components (same pattern as Equibot check above)
const actionRow = containerComponents.find((c: any) => c?.components);
const pluginUrl = actionRow?.components?.[0]?.url;
if (pluginUrl?.startsWith("https://nightcord.su/plugins/")) {
if (pluginUrl?.startsWith("https://nightcord.ru/plugins/")) {
const pluginNameFromUrl = decodeURIComponent(new URL(pluginUrl).pathname.split("/")[2]);
const pluginNameNoSpaces = pluginNameFromUrl?.toLowerCase().replace(/\s+/g, "");
const actualPluginName =
@@ -96,7 +96,7 @@ function UpdateBanner() {
setStatus("Redirection vers le site...");
// Rediriger vers le site de téléchargement
window.open("https://nightcord.su", "_blank");
window.open("https://nightcord.ru", "_blank");
setTimeout(() => {
setDismissed(true);
+2 -2
View File
@@ -8,7 +8,7 @@ import definePlugin, { PluginNative } from "@utils/types";
const Native = VencordNative.pluginHelpers.TitlebarLink as PluginNative<typeof import("./native")>;
const TARGET_URL = "https://nightcord.su";
const TARGET_URL = "https://nightcord.ru";
const CSS = `
#nightcord-titlebar-btn {
@@ -59,7 +59,7 @@ function remove() {
export default definePlugin({
name: "TitlebarLink",
enabledByDefault: true,
description: "Click on the central Discord title to open nightcord.su",
description: "Click on the central Discord title to open nightcord.ru",
authors: [{ name: "Nightcord", id: 0n }],
required: true,
patches: [],
+1 -1
View File
@@ -92,7 +92,7 @@ async function loadBadges(url: string, noCache = false) {
async function loadAllBadges(noCache = false) {
const vencordBadges = await loadBadges("https://badges.vencord.dev/badges.json", noCache).catch(() => ({}));
const equicordBadges = await loadBadges("https://badge.equicord.org/badges.json", noCache).catch(() => ({}));
const nightcordBadges = await loadBadges("https://api.nightcord.su/badges", noCache).catch(() => ({}));
const nightcordBadges = await loadBadges("https://api.nightcord.ru/badges", noCache).catch(() => ({}));
DonorBadges = vencordBadges;
EquicordDonorBadges = equicordBadges;