mirror of
https://git.shipoclu.com/moon/plspace.git
synced 2026-08-13 02:42:30 +00:00
some copy changes
This commit is contained in:
@@ -16,9 +16,6 @@ you can host anywhere.
|
|||||||
The canonical repository is hosted on Radicle:
|
The canonical repository is hosted on Radicle:
|
||||||
`rad://z2gAKC6ESt5ZBV419uVPf2vFtEHCT`.
|
`rad://z2gAKC6ESt5ZBV419uVPf2vFtEHCT`.
|
||||||
|
|
||||||
The backup mirror is
|
|
||||||
[`https://git.shipoclu.com/moon/plspace.git`](https://git.shipoclu.com/moon/plspace.git).
|
|
||||||
|
|
||||||
## What it looks like
|
## What it looks like
|
||||||
|
|
||||||
| MySpace | plspace |
|
| MySpace | plspace |
|
||||||
|
|||||||
+4
-1
@@ -18,6 +18,7 @@
|
|||||||
import Search from '$routes/Search.svelte'
|
import Search from '$routes/Search.svelte'
|
||||||
import Login from '$routes/Login.svelte'
|
import Login from '$routes/Login.svelte'
|
||||||
import Settings from '$routes/Settings.svelte'
|
import Settings from '$routes/Settings.svelte'
|
||||||
|
import About from '$routes/About.svelte'
|
||||||
import Compose from '$routes/Compose.svelte'
|
import Compose from '$routes/Compose.svelte'
|
||||||
import NotFound from '$routes/NotFound.svelte'
|
import NotFound from '$routes/NotFound.svelte'
|
||||||
import type { TimelineKind } from '$lib/api/endpoints'
|
import type { TimelineKind } from '$lib/api/endpoints'
|
||||||
@@ -50,7 +51,7 @@
|
|||||||
const route = $derived(router.current)
|
const route = $derived(router.current)
|
||||||
|
|
||||||
/** Route names that are usable before a server is chosen. */
|
/** Route names that are usable before a server is chosen. */
|
||||||
const ALWAYS_AVAILABLE = new Set(['login', 'settings', 'notfound'])
|
const ALWAYS_AVAILABLE = new Set(['login', 'settings', 'about', 'notfound'])
|
||||||
|
|
||||||
const TIMELINE_KINDS: readonly TimelineKind[] = ['home', 'public', 'local']
|
const TIMELINE_KINDS: readonly TimelineKind[] = ['home', 'public', 'local']
|
||||||
|
|
||||||
@@ -109,6 +110,8 @@
|
|||||||
<Login />
|
<Login />
|
||||||
{:else if route.name === 'settings'}
|
{:else if route.name === 'settings'}
|
||||||
<Settings />
|
<Settings />
|
||||||
|
{:else if route.name === 'about'}
|
||||||
|
<About />
|
||||||
{:else}
|
{:else}
|
||||||
<NotFound />
|
<NotFound />
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
<a href="#/browse">Browse</a>
|
<a href="#/browse">Browse</a>
|
||||||
<a href="#/search">Search</a>
|
<a href="#/search">Search</a>
|
||||||
<a href="#/settings">Settings</a>
|
<a href="#/settings">Settings</a>
|
||||||
|
<a href="#/about">About plspace</a>
|
||||||
{#if domain}
|
{#if domain}
|
||||||
<a href={`https://${session.host}/about`} target="_blank" rel="noopener noreferrer">About this server</a>
|
<a href={`https://${session.host}/about`} target="_blank" rel="noopener noreferrer">About this server</a>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ const ROUTES: RoutePattern[] = [
|
|||||||
{ name: 'home', pattern: '/' },
|
{ name: 'home', pattern: '/' },
|
||||||
{ name: 'login', pattern: '/login' },
|
{ name: 'login', pattern: '/login' },
|
||||||
{ name: 'settings', pattern: '/settings' },
|
{ name: 'settings', pattern: '/settings' },
|
||||||
|
{ name: 'about', pattern: '/about' },
|
||||||
{ name: 'browse', pattern: '/browse' },
|
{ name: 'browse', pattern: '/browse' },
|
||||||
{ name: 'search', pattern: '/search' },
|
{ name: 'search', pattern: '/search' },
|
||||||
{ name: 'mail', pattern: '/mail' },
|
{ name: 'mail', pattern: '/mail' },
|
||||||
|
|||||||
@@ -17,4 +17,11 @@ describe('parseHash', () => {
|
|||||||
params: { id: 'status/one' },
|
params: { id: 'status/one' },
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('routes the public About page', () => {
|
||||||
|
expect(parseHash('#/about')).toMatchObject({
|
||||||
|
name: 'about',
|
||||||
|
params: {},
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import Module from '$components/common/Module.svelte'
|
||||||
|
|
||||||
|
const RADICLE_REPOSITORY = 'rad://z2gAKC6ESt5ZBV419uVPf2vFtEHCT'
|
||||||
|
|
||||||
|
$effect(() => {
|
||||||
|
document.title = 'About plspace | plspace'
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="page about-page">
|
||||||
|
<h1 class="page-title">About plspace</h1>
|
||||||
|
<p class="page-subtitle">It’s always Pleroma™.</p>
|
||||||
|
|
||||||
|
<div class="layout--single">
|
||||||
|
<Module title="About plspace" variant="band">
|
||||||
|
<p>
|
||||||
|
plspace is free software licensed under the
|
||||||
|
<strong>GNU Affero General Public License (AGPL)</strong>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The source code is in the canonical Radicle repository:
|
||||||
|
<a href={RADICLE_REPOSITORY}><code>{RADICLE_REPOSITORY}</code></a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Made by <a href="#/@zero@posting.solutions">@zero@posting.solutions</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<strong>Privacy policy:</strong> zero logging and zero tracking.
|
||||||
|
</p>
|
||||||
|
<p><strong>proudly 100% vibe-coded slop.</strong></p>
|
||||||
|
</Module>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import { render } from '@testing-library/svelte'
|
||||||
|
import { describe, expect, it } from 'vitest'
|
||||||
|
import About from './About.svelte'
|
||||||
|
|
||||||
|
describe('About', () => {
|
||||||
|
it('identifies the license, canonical source, author, and provenance', () => {
|
||||||
|
const view = render(About)
|
||||||
|
|
||||||
|
expect(view.getByRole('heading', { name: 'About plspace', level: 1 })).toBeInTheDocument()
|
||||||
|
expect(view.getByText(/GNU Affero General Public License/)).toBeInTheDocument()
|
||||||
|
expect(
|
||||||
|
view.getByRole('link', {
|
||||||
|
name: 'rad://z2gAKC6ESt5ZBV419uVPf2vFtEHCT',
|
||||||
|
}),
|
||||||
|
).toHaveAttribute('href', 'rad://z2gAKC6ESt5ZBV419uVPf2vFtEHCT')
|
||||||
|
expect(view.getByRole('link', { name: '@zero@posting.solutions' })).toHaveAttribute(
|
||||||
|
'href',
|
||||||
|
'#/@zero@posting.solutions',
|
||||||
|
)
|
||||||
|
expect(view.getByText(/zero logging and zero tracking/i)).toBeInTheDocument()
|
||||||
|
expect(view.getByText('proudly 100% vibe-coded slop.')).toBeInTheDocument()
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
* anonymous timeline reads; suggesting one of those hands a first-time
|
* anonymous timeline reads; suggesting one of those hands a first-time
|
||||||
* visitor an empty page. Re-check before adding to this list.
|
* visitor an empty page. Re-check before adding to this list.
|
||||||
*/
|
*/
|
||||||
const SUGGESTIONS = ['pleroma.soykaf.com', 'lain.com', 'spinster.xyz']
|
const SUGGESTIONS = ['pleroma.soykaf.com', 'lain.com', 'fosstodon.org']
|
||||||
|
|
||||||
async function signIn(event: SubmitEvent): Promise<void> {
|
async function signIn(event: SubmitEvent): Promise<void> {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
|||||||
Reference in New Issue
Block a user