diff --git a/README.md b/README.md
index 7167a2ea2..891f7220b 100644
--- a/README.md
+++ b/README.md
@@ -47,6 +47,11 @@ This extension, UT Registration Plus (UTRP), tries to streamline most of the unn
- Run `pnpm build`
+
+Beta builds
+Use `BETA=true pnpm build` to build a beta build.
+
+
## Development: Loading the Extension Manually
Open [chrome://extensions](chrome://extensions), ensure you have 'Developer Mode' enabled, and click 'Load unpacked'.
diff --git a/package.json b/package.json
index d92764209..b22ba7f47 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "ut-registration-plus",
"displayName": "UT Registration Plus",
- "version": "0.0.1",
+ "version": "2.0.0-beta1",
"description": "The UT Registration Plus extension is a Chrome extension that allows students to easily register for classes at The University of Texas at Austin.",
"private": true,
"homepage": "sriramhariharan.com",
diff --git a/public/icons/icon_beta.svg b/public/icons/icon_beta.svg
new file mode 100644
index 000000000..a15ed1e14
--- /dev/null
+++ b/public/icons/icon_beta.svg
@@ -0,0 +1,30 @@
+
+
\ No newline at end of file
diff --git a/public/icons/icon_beta_128.png b/public/icons/icon_beta_128.png
new file mode 100644
index 000000000..22163fd7e
Binary files /dev/null and b/public/icons/icon_beta_128.png differ
diff --git a/public/icons/icon_beta_16.png b/public/icons/icon_beta_16.png
new file mode 100644
index 000000000..b71b7b7d7
Binary files /dev/null and b/public/icons/icon_beta_16.png differ
diff --git a/public/icons/icon_beta_32.png b/public/icons/icon_beta_32.png
new file mode 100644
index 000000000..311164e68
Binary files /dev/null and b/public/icons/icon_beta_32.png differ
diff --git a/public/icons/icon_beta_48.png b/public/icons/icon_beta_48.png
new file mode 100644
index 000000000..7e624255f
Binary files /dev/null and b/public/icons/icon_beta_48.png differ
diff --git a/public/icons/icon_development.svg b/public/icons/icon_development.svg
new file mode 100644
index 000000000..26d4d1ce2
--- /dev/null
+++ b/public/icons/icon_development.svg
@@ -0,0 +1,30 @@
+
+
\ No newline at end of file
diff --git a/public/icons/icon_development_128.png b/public/icons/icon_development_128.png
index 2be0db820..88e59f27e 100644
Binary files a/public/icons/icon_development_128.png and b/public/icons/icon_development_128.png differ
diff --git a/public/icons/icon_development_16.png b/public/icons/icon_development_16.png
index db52c718a..861a801f2 100644
Binary files a/public/icons/icon_development_16.png and b/public/icons/icon_development_16.png differ
diff --git a/public/icons/icon_development_32.png b/public/icons/icon_development_32.png
index 6a1ce7657..f3533acd9 100644
Binary files a/public/icons/icon_development_32.png and b/public/icons/icon_development_32.png differ
diff --git a/public/icons/icon_development_48.png b/public/icons/icon_development_48.png
index b7e88ccec..1eeedd7ef 100644
Binary files a/public/icons/icon_development_48.png and b/public/icons/icon_development_48.png differ
diff --git a/public/icons/icon_production.svg b/public/icons/icon_production.svg
new file mode 100644
index 000000000..a110a6302
--- /dev/null
+++ b/public/icons/icon_production.svg
@@ -0,0 +1,30 @@
+
+
\ No newline at end of file
diff --git a/public/icons/icon_production_128.png b/public/icons/icon_production_128.png
index a875bcb46..d1e03307b 100644
Binary files a/public/icons/icon_production_128.png and b/public/icons/icon_production_128.png differ
diff --git a/public/icons/icon_production_16.png b/public/icons/icon_production_16.png
index ac603ca6e..8dbdb30d2 100644
Binary files a/public/icons/icon_production_16.png and b/public/icons/icon_production_16.png differ
diff --git a/public/icons/icon_production_32.png b/public/icons/icon_production_32.png
index 5f245778b..d7613ec05 100644
Binary files a/public/icons/icon_production_32.png and b/public/icons/icon_production_32.png differ
diff --git a/public/icons/icon_production_48.png b/public/icons/icon_production_48.png
index acda2012f..cb068f354 100644
Binary files a/public/icons/icon_production_48.png and b/public/icons/icon_production_48.png differ
diff --git a/src/manifest.ts b/src/manifest.ts
index 8efde8fa2..5e25b899b 100644
--- a/src/manifest.ts
+++ b/src/manifest.ts
@@ -9,7 +9,12 @@ const [major, minor, patch, label = '0'] = packageJson.version
// split into version parts
.split(/[.-]/);
-const mode = process.env.NODE_ENV;
+const isBeta = !!process.env.BETA;
+const mode = isBeta ? 'beta' : process.env.NODE_ENV;
+
+if (isBeta && process.env.NODE_ENV !== 'production') throw new Error('Cannot have beta non-production build');
+// eslint-disable-next-line no-nested-ternary
+const nameSuffix = isBeta ? ' (beta)' : mode === 'development' ? ' (dev)' : '';
const HOST_PERMISSIONS: string[] = [
'*://*.utdirect.utexas.edu/apps/registrar/course_schedule/*',
@@ -22,7 +27,7 @@ const HOST_PERMISSIONS: string[] = [
const manifest = defineManifest(async () => ({
manifest_version: 3,
- name: `${packageJson.displayName ?? packageJson.name}${mode === 'development' ? ' (dev)' : ''}`,
+ name: `${packageJson.displayName ?? packageJson.name}${nameSuffix}`,
version: `${major}.${minor}.${patch}.${label}`,
description: packageJson.description,
options_page: 'src/pages/options/index.html',
diff --git a/unocss.config.ts b/unocss.config.ts
index a998c7778..2802eced6 100644
--- a/unocss.config.ts
+++ b/unocss.config.ts
@@ -22,7 +22,7 @@ export default defineConfig({
shortcuts: {
focusable: 'outline-none ring-blue-500/50 dark:ring-blue-400/60 ring-0 focus-visible:ring-4',
btn: 'h-10 w-auto flex cursor-pointer justify-center items-center gap-2 rounded-1 px-4 py-0 text-4.5 btn-transition disabled:(cursor-not-allowed opacity-50) active:enabled:scale-96 focusable',
- link: 'text-ut-burntorange underline underline-offset-2 hover:text-ut-orange focus-visible:text-ut-orange focusable btn-transition ease-out-expo',
+ link: 'text-ut-burntorange link:text-ut-burntorange underline underline-offset-2 hover:text-ut-orange focus-visible:text-ut-orange focusable btn-transition ease-out-expo',
linkanimate:
'relative cursor-pointer transition duration-100 ease-out after:(absolute left-0.4 right-0.4 h-2px scale-x-95 bg-ut-orange opacity-0 transition duration-250 ease-out-expo content-empty -bottom-0.75 -translate-y-0.5) active:scale-95 hover:text-ut-orange focus-visible:text-ut-orange hover:after:(opacity-100) !hover:after:translate-y-0 !hover:after:scale-x-100',
},