Fully rename Pixeldrain to Nova

This commit is contained in:
2026-06-10 23:53:03 +02:00
parent 3c13cd1a14
commit 7b24a9d8cf
95 changed files with 321 additions and 1989 deletions

View File

@@ -28,7 +28,7 @@ onMount(async () => {
{/snippet}
<p>
Your user account has been banned from uploading to
pixeldrain due to violation of the
Nova due to violation of the
<a href="/abuse">content policy</a>. Below is a list of
files originating from your account which have been blocked:
</p>
@@ -63,7 +63,7 @@ onMount(async () => {
</div>
<p>
If you would like to dispute your account ban you can mail me at
support@pixeldrain.com. Please do not mail unless you have a
support@nova.storage. Please do not mail unless you have a
good reason. If you do not provide a valid reason why the ban
should be reversed your e-mail will be ignored. And do not
forget to put your username ({window.user.username}) in the
@@ -87,7 +87,7 @@ onMount(async () => {
{#if result.ip_banned}
<p>
Your IP address ({result.address}) has been banned from
uploading to pixeldrain due to violation of the
uploading to Nova due to violation of the
<a href="/abuse">content policy</a>. Below is a list of
files originating from your IP address which have been
blocked:
@@ -96,7 +96,7 @@ onMount(async () => {
<p>
Your IP address ({result.address}) has received copyright
strikes. At 10 copyright strikes your IP address will be banned
and you will be unable to upload files to pixeldrain. Below is a
and you will be unable to upload files to Nova. Below is a
list of files originating from your IP address which have been
blocked:
</p>
@@ -151,7 +151,7 @@ onMount(async () => {
</p>
<p>
If you would like to dispute your IP ban you can mail me at
support@pixeldrain.com. Please do not mail unless you have a good
support@nova.storage. Please do not mail unless you have a good
reason. If you do not provide a valid reason why the IP ban should
be reversed your e-mail will be ignored. And do not forget to put
your IP address ({result.address}) in the e-mail.

View File

@@ -6,7 +6,7 @@ import OtherPlans from "./OtherPlans.svelte";
<section>
<p>
Pixeldrain features two different payment modes. We offer a monthly
Nova features two different payment modes. We offer a monthly
subscription which is managed by Patreon, and a Prepaid subscription
which supports a dozen different payment providers. With Prepaid you pay
in advance to charge your credit, then usage will be subtracted from
@@ -44,7 +44,7 @@ import OtherPlans from "./OtherPlans.svelte";
{/snippet}
The Pro subscription is managed by Patreon. Patreon's own fees
and sales tax will be added to this price. After paying you need
to link your pixeldrain account to Patreon to activate the plan.
to link your Nova account to Patreon to activate the plan.
</Tooltip>
</div>
<div class="feature_cell prepaid_feat">
@@ -224,13 +224,13 @@ import OtherPlans from "./OtherPlans.svelte";
<div class="bottom_row pro_feat">
{#if window.user.subscription.id === "patreon_1"}
You have this plan<br/>
Thank you for supporting pixeldrain!
Thank you for supporting Nova!
{:else}
<a href="https://www.patreon.com/join/pixeldrain/checkout?rid=5736701&cadence=1" class="button button_highlight round">
<a href="https://www.patreon.com/join/nova/checkout?rid=5736701&cadence=1" class="button button_highlight round">
€ 4 per month
</a>
or
<a href="https://www.patreon.com/join/pixeldrain/checkout?rid=5736701&cadence=12" class="button button_highlight round">
<a href="https://www.patreon.com/join/nova/checkout?rid=5736701&cadence=12" class="button button_highlight round">
€ 40 per year!
</a>
<br/>

View File

@@ -17,6 +17,11 @@ let upload_widget
<AddressReputation/>
<div class="page_content">
<div class="highlight_yellow">
This is a development server. All files and accounts may be lost when
the final product launches.
</div>
<section>
<p>
Nova.storage is a platform for cost-effective cloud storage and

View File

@@ -4,9 +4,9 @@
Persistence<br/>
{#if window.user.subscription.id === "patreon_2"}
You have this plan<br/>
Thank you for supporting pixeldrain!
Thank you for supporting Nova!
{:else}
<a href="https://www.patreon.com/join/pixeldrain/checkout?rid=5291482" class="button button_highlight round">
<a href="https://www.patreon.com/join/nova/checkout?rid=5291482" class="button button_highlight round">
€ 8
</a>
/ month
@@ -30,9 +30,9 @@
Tenacity<br/>
{#if window.user.subscription.id === "patreon_3"}
You have this plan<br/>
Thank you for supporting pixeldrain!
Thank you for supporting Nova!
{:else}
<a href="https://www.patreon.com/join/pixeldrain/checkout?rid=5291516" class="button button_highlight round">
<a href="https://www.patreon.com/join/nova/checkout?rid=5291516" class="button button_highlight round">
€ 16
</a>
/ month
@@ -51,9 +51,9 @@
Eternity<br/>
{#if window.user.subscription.id === "patreon_4"}
You have this plan<br/>
Thank you for supporting pixeldrain!
Thank you for supporting Nova!
{:else}
<a href="https://www.patreon.com/join/pixeldrain/checkout?rid=5291528" class="button button_highlight round">
<a href="https://www.patreon.com/join/nova/checkout?rid=5291528" class="button button_highlight round">
€ 32
</a>
/ month
@@ -72,9 +72,9 @@
Infinity<br/>
{#if window.user.subscription.id === "patreon_6"}
You have this plan<br/>
Thank you for supporting pixeldrain!
Thank you for supporting Nova!
{:else}
<a href="https://www.patreon.com/join/pixeldrain/checkout?rid=6573749" class="button button_highlight round">
<a href="https://www.patreon.com/join/nova/checkout?rid=6573749" class="button button_highlight round">
€ 64
</a>
/ month

View File

@@ -2,9 +2,9 @@
import Euro from "util/Euro.svelte";
import ProgressBar from "util/ProgressBar.svelte";
let fnx_storage = $state(0)
let fnx_egress = $state(0)
let fnx_total = $state(0)
let nova_storage = $state(0)
let nova_egress = $state(0)
let nova_total = $state(0)
let backblaze_storage = $state(0)
let backblaze_egress = $state(0)
let backblaze_api = $state(0)
@@ -20,9 +20,9 @@ let avg_file_size = $state(1000) // kB
$effect(() => {
// Nova has a minimum file size of 10kB. Calculate the number of files from
// storage and avg file size, then calculate storage usage based on that.
fnx_storage = Math.max(storage * 4, ((storage*10)/avg_file_size)*4)
fnx_egress = egress * 1
fnx_total = fnx_storage + fnx_egress
nova_storage = Math.max(storage * 4, ((storage*10)/avg_file_size)*4)
nova_egress = egress * 1
nova_total = nova_storage + nova_egress
// Egress at Backblaze is free up to three times the amount of storage, then
// it's $10/TB
@@ -35,7 +35,7 @@ $effect(() => {
wasabi_storage = storage * 6.99
wasabi_total = (egress > storage) ? 0 : wasabi_storage
price_max = Math.max(fnx_total, backblaze_total, wasabi_total)
price_max = Math.max(nova_total, backblaze_total, wasabi_total)
});
</script>
@@ -67,10 +67,10 @@ $effect(() => {
<div class="bars">
<div>
<div>
Nova.storage - <Euro amount={fnx_total*1e6}/> / month<br/>
<Euro amount={fnx_storage*1e6}/> storage,
<Euro amount={fnx_egress*1e6}/> egress
<ProgressBar used={fnx_total} total={price_max}/>
Nova.storage - <Euro amount={nova_total*1e6}/> / month<br/>
<Euro amount={nova_storage*1e6}/> storage,
<Euro amount={nova_egress*1e6}/> egress
<ProgressBar used={nova_total} total={price_max}/>
</div>
{#if avg_file_size < 10}
<div>