diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index e4efd5e4da..a6f78a530f 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -45,7 +45,7 @@ Every file must be valid JSON and follow this exact structure from https://docs.
**Critical rules (enforce strictly):**
- `"owner"."username"` **MUST** exactly match the GitHub username of the person who opened the PR, **unless** the PR author is a trusted maintainer listed in `util/trusted.json`.
- Trusted maintainers: STICKnoLOGIC, DEV-DIBSTER, iostpa, orangci, Stef-00012, satr14washere, wdhdev.
+ Trusted maintainers: STICKnoLOGIC, DEV-DIBSTER, iostpa, orangci, Stef-DP, satr14washere, wdhdev.
- `"records"` is required (note: it must be `"records"`, never `"record"`).
- **CNAME records cannot be used with any other records and vice versa.** Only one record type is allowed if CNAME is present.
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e94fd11087..826f192592 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -10,6 +10,8 @@ on:
- "tests/*"
- "util/*"
- ".github/workflows/ci.yml"
+ - "package.json"
+ - "package-lock.json"
workflow_dispatch:
diff --git a/README.md b/README.md
index 63f51856c8..7cb235a0a7 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,13 @@
is-a.dev is a service that allows developers to get a sweet-looking .is-a.dev subdomain for their personal websites.
+> [!TIP]
+> We have just launched another free subdomain service for developers, called [**`is-a.bot`**](https://is-a.bot)!
+>
+> Claim your `.is-a.bot` subdomain for free, before it's too late!
+>
+> **GitHub** — [**free-domains/is-a.bot**](https://github.com/free-domains/is-a.bot)
+
---
## Announcements
diff --git a/domains/_discord.rusky.json b/domains/_discord.rusky.json
new file mode 100644
index 0000000000..5893125593
--- /dev/null
+++ b/domains/_discord.rusky.json
@@ -0,0 +1,8 @@
+{
+ "owner": {
+ "username": "ruskydev"
+ },
+ "records": {
+ "TXT": "dh=cb120c45e7e8c3ff2e65938b1e2fdf9d2f18707f"
+ }
+}
diff --git a/domains/_vercel.arem.json b/domains/_vercel.arem.json
new file mode 100644
index 0000000000..1c4a88500f
--- /dev/null
+++ b/domains/_vercel.arem.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "Arem-ee",
+ "email": "toromadeadesina@gmail.com"
+ },
+ "records": {
+ "TXT": "vc-domain-verify=arem.is-a.dev,2ed19320fd195ba3dd09"
+ }
+}
diff --git a/domains/_vercel.piyush.json b/domains/_vercel.piyush.json
new file mode 100644
index 0000000000..f6c585d53b
--- /dev/null
+++ b/domains/_vercel.piyush.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "Piyush-Sagar",
+ "email": "sagarpiyush.27@gmail.com"
+ },
+ "records": {
+ "TXT": "vc-domain-verify=piyush.is-a.dev,3332d110f16d6401a6ce"
+ }
+}
\ No newline at end of file
diff --git a/domains/_vercel.rusky.json b/domains/_vercel.rusky.json
new file mode 100644
index 0000000000..7c84829d1c
--- /dev/null
+++ b/domains/_vercel.rusky.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "ruskydev",
+ "email": "iamayaanalee@gmail.com"
+ },
+ "records": {
+ "TXT": "vc-domain-verify=rusky.is-a.dev,79b8189df5b481e60e4c"
+ }
+}
diff --git a/domains/arem.json b/domains/arem.json
new file mode 100644
index 0000000000..a437432063
--- /dev/null
+++ b/domains/arem.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "Arem-ee",
+ "email": "toromadeadesina@gmail.com"
+ },
+ "records": {
+ "A": ["216.198.79.1"]
+ }
+}
diff --git a/domains/austin.json b/domains/austin.json
new file mode 100644
index 0000000000..c254bc08bb
--- /dev/null
+++ b/domains/austin.json
@@ -0,0 +1,11 @@
+{
+ "description": "Austin Munene - Developer Portfolio",
+ "repo": "https://github.com/AustinMunene/Austin.is-a.dev",
+ "owner": {
+ "username": "AustinMunene",
+ "email": "austinmunesh@gmail.com"
+ },
+ "records": {
+ "CNAME": "austinmunene.netlify.app"
+ }
+}
diff --git a/domains/dash-test.json b/domains/dash-test.json
new file mode 100644
index 0000000000..4c8b5cde8c
--- /dev/null
+++ b/domains/dash-test.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "is-a-dev",
+ "email": "admin@is-a.dev"
+ },
+ "records": {
+ "NS": ["hank.ns.cloudflare.com", "megan.ns.cloudflare.com"]
+ }
+}
diff --git a/domains/dranimalis.json b/domains/dranimalis.json
new file mode 100644
index 0000000000..5293ed3e66
--- /dev/null
+++ b/domains/dranimalis.json
@@ -0,0 +1,8 @@
+{
+ "owner": {
+ "username": "dranimalis"
+ },
+ "records": {
+ "CNAME": "dranimalis.github.io"
+ }
+}
diff --git a/domains/farish.json b/domains/farish.json
deleted file mode 100644
index 76228fc31c..0000000000
--- a/domains/farish.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "description": "Email",
- "owner": {
- "username": "fxrysh",
- "discord": "Fxrysh#5947",
- "twitter": "fxryshdev",
- "email": "hello@farish.is-a.dev"
- },
- "records": {
- "MX": ["mx1.improvmx.com", "mx2.improvmx.com"],
- "TXT": "v=spf1 include:spf.improvmx.com ~all"
- }
-}
diff --git a/domains/fxrysh.json b/domains/fxrysh.json
deleted file mode 100644
index 58332d614e..0000000000
--- a/domains/fxrysh.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "owner": {
- "username": "fxrysh",
- "discord": "Fxrysh#5947",
- "twitter": "fxryshdev",
- "email": "hello@farish.is-a.dev"
- },
- "records": {
- "CNAME": "86872205c14179c98afa1392.cname.deno.dev"
- }
-}
diff --git a/domains/hasnatibrahim.json b/domains/hasnatibrahim.json
new file mode 100644
index 0000000000..97b69e4fdc
--- /dev/null
+++ b/domains/hasnatibrahim.json
@@ -0,0 +1,10 @@
+{
+ "description": "Portfolio of Hasnat Ibrahim",
+ "owner": {
+ "username": "hasnatibrahim10-sys",
+ "email": "hasnatibrahim10@gmail.com"
+ },
+ "records": {
+ "CNAME": "hasnat-ibrahim.pages.dev"
+ }
+}
diff --git a/domains/joe50097.json b/domains/joe50097.json
index 902e88da00..c087e881d4 100644
--- a/domains/joe50097.json
+++ b/domains/joe50097.json
@@ -1,7 +1,7 @@
{
"owner": {
"username": "Joe50097",
- "email": "me@joe50097.is-a.dev"
+ "email": "me@joe50097.dev"
},
"records": {
"MX": ["mx01.mail.icloud.com", "mx02.mail.icloud.com"],
diff --git a/domains/piyush.json b/domains/piyush.json
new file mode 100644
index 0000000000..5af78d9f68
--- /dev/null
+++ b/domains/piyush.json
@@ -0,0 +1,11 @@
+{
+ "owner": {
+ "username": "Piyush-Sagar",
+ "email": "sagarpiyush.27@gmail.com"
+ },
+ "records": {
+ "A": [
+ "216.198.79.1"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/domains/rusky.json b/domains/rusky.json
new file mode 100644
index 0000000000..7dd0d3b0ec
--- /dev/null
+++ b/domains/rusky.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "ruskydev",
+ "email": "iamayaanalee@gmail.com"
+ },
+ "records": {
+ "A": ["216.198.79.1"]
+ }
+}
diff --git a/domains/sig1._domainkey.joe50097.json b/domains/sig1._domainkey.joe50097.json
index 79803016f8..77c16a25ce 100644
--- a/domains/sig1._domainkey.joe50097.json
+++ b/domains/sig1._domainkey.joe50097.json
@@ -1,7 +1,7 @@
{
"owner": {
"username": "Joe50097",
- "email": "me@joe50097.is-a.dev"
+ "email": "me@joe50097.dev"
},
"records": {
"CNAME": "sig1.dkim.joe50097.is-a.dev.at.icloudmailadmin.com"
diff --git a/domains/tatpow.json b/domains/tatpow.json
new file mode 100644
index 0000000000..d95f0b2c90
--- /dev/null
+++ b/domains/tatpow.json
@@ -0,0 +1,8 @@
+{
+ "owner": {
+ "username": "tatpow"
+ },
+ "records": {
+ "CNAME": "tatpow.github.io"
+ }
+}
diff --git a/domains/ukasha167.json b/domains/ukasha167.json
new file mode 100644
index 0000000000..30b70ac241
--- /dev/null
+++ b/domains/ukasha167.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "ukasha167",
+ "email": "ukashaanwar167@gmail.com"
+ },
+ "records": {
+ "CNAME": "ukasha167.github.io"
+ }
+}
diff --git a/domains/will.json b/domains/will.json
deleted file mode 100644
index 340e2bfa92..0000000000
--- a/domains/will.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "owner": {
- "username": "wdhdev",
- "email": "william@is-a.dev"
- },
- "records": {
- "URL": "https://wharrison.com.au"
- }
-}
diff --git a/tests/proxy.test.js b/tests/proxy.test.js
index 8fc60f9d46..2cc601ec88 100644
--- a/tests/proxy.test.js
+++ b/tests/proxy.test.js
@@ -50,7 +50,7 @@ t("Domains with proxy enabled must have at least one proxy-able record", (t) =>
});
});
-const disallowedRecords = [
+const unproxyable = [
{
type: "CNAME",
value: "*.onrender.com"
@@ -62,7 +62,7 @@ t("Domains with specific records must not have proxy enabled", (t) => {
const data = getDomainData(file);
if (data.proxied) {
- disallowedRecords.forEach((record) => {
+ unproxyable.forEach((record) => {
let recordExists = false;
if (!data.records[record.type]) {
diff --git a/util/internal.json b/util/internal.json
index 33a1b3bd1f..4481442486 100644
--- a/util/internal.json
+++ b/util/internal.json
@@ -7,6 +7,8 @@
"ns2",
"ns3",
"ns4",
+ "ns5",
+ "ns6",
"raw",
"www"
]
diff --git a/util/reserved.json b/util/reserved.json
index 987aceea6c..d54a5702ec 100644
--- a/util/reserved.json
+++ b/util/reserved.json
@@ -79,8 +79,6 @@
"notifications",
"ns",
"ns0",
- "ns5",
- "ns6",
"ns7",
"ns8",
"ns9",
diff --git a/util/trusted.json b/util/trusted.json
index 8ac2f289ec..a7d185cc66 100644
--- a/util/trusted.json
+++ b/util/trusted.json
@@ -12,7 +12,7 @@
"id": 90866414
},
{
- "username": "Stef-00012",
+ "username": "Stef-DP",
"id": 81536172
},
{