tangled
alpha
login
or
join now
ptr.pet
/
endpoint
0
fork
atom
data endpoint for entity 90008 (aka. a website)
0
fork
atom
overview
issues
pulls
pipelines
improve og tags
ptr.pet
2 months ago
61331b56
6f46b816
verified
This commit was signed with the committer's
known signature
.
ptr.pet
SSH Key Fingerprint:
SHA256:Abmvag+juovVufZTxyWY8KcVgrznxvBjQpJesv071Aw=
0/0
Waiting for spindle ...
+55
-62
6 changed files
expand all
collapse all
unified
split
eunomia
src
routes
(site)
+layout.svelte
+page.svelte
about
_layout.svelte
copy
+page.svelte
entries
+page.svelte
guestbook
+page.svelte
+1
eunomia/src/routes/(site)/+layout.svelte
···
64
64
<meta name="twitter:card" content="summary_large_image" />
65
65
<meta name="twitter:image" content="https://gaze.systems/_api/background/og.png" />
66
66
<meta property="og:site_name" content="gaze.systems" />
67
67
+
<meta property="og:title" content={title} />
67
68
<meta property="og:url" content="https://gaze.systems/" />
68
69
<meta property="og:image" content="https://gaze.systems/_api/background/og.png" />
69
70
<meta property="og:image:type" content="image/png" />
+21
-43
eunomia/src/routes/(site)/+page.svelte
···
116
116
let { data }: Props = $props();
117
117
</script>
118
118
119
119
+
<svelte:head>
120
120
+
<meta property="og:description" content="90008's data endpoint" />
121
121
+
<meta property="og:type" content="website" />
122
122
+
</svelte:head>
123
123
+
119
124
<div class="flex flex-col-reverse md:flex-row gap-2 md:gap-4 md:h-full h-card">
120
125
<div class="flex flex-col gap-2 md:gap-6 md:ml-auto place-items-end">
121
126
<Window title="status" iconUri="/icons/msn.webp" removePadding>
···
129
134
<a href="/entries">last log was…</a>
130
135
published {renderRelativeDate(data.lastNote.published)}!
131
136
</p>
132
132
-
<div
133
133
-
class="mt-0 p-1.5 border-4 border-double bg-ralsei-black min-w-full max-w-[60ch]"
134
134
-
>
137
137
+
<div class="mt-0 p-1.5 border-4 border-double bg-ralsei-black min-w-full max-w-[60ch]">
135
138
<Note rootNote={data.lastNote} onlyContent />
136
139
</div>
137
140
</div>
···
152
155
{#each data.lastActivity as activity, index (index)}
153
156
<div
154
157
class="text-ralsei-green-light text-ellipsis text-nowrap overflow-hidden max-w-[60ch]"
155
155
-
style="opacity: {1.0 -
156
156
-
(index * 1.0) / data.lastActivity.length +
157
157
-
index * 0.03};"
158
158
+
style="opacity: {1.0 - (index * 1.0) / data.lastActivity.length + index * 0.03};"
158
159
>
159
160
<span title={renderDate(activity.date)} class="text-[#f87c32]"
160
161
>[{activity.source}]</span
161
162
>
162
162
-
<a href={activity.link} title={activity.description}
163
163
-
>{activity.description}</a
164
164
-
>
163
163
+
<a href={activity.link} title={activity.description}>{activity.description}</a>
165
164
</div>
166
165
{/each}
167
166
</div>
···
174
173
<div class="flex flex-row gap-0.5 m-1.5 border-4 border-double bg-ralsei-black">
175
174
<!-- svelte-ignore a11y_missing_attribute -->
176
175
<img
177
177
-
class="border-4 {showAlbum
178
178
-
? 'w-[5.75rem] h-[5.75rem]'
179
179
-
: 'w-[4.5rem] h-[4.5rem]'} {data.lastTrack.image
176
176
+
class="border-4 {showAlbum ? 'w-[5.75rem] h-[5.75rem]' : 'w-[4.5rem] h-[4.5rem]'} {data
177
177
+
.lastTrack.image
180
178
? 'object-cover'
181
179
: 'p-2'}"
182
180
style="border-style: none double none none; {data.lastTrack.image
···
190
188
class="text-shadow-green text-ralsei-green-light text-sm text-ellipsis text-nowrap overflow-hidden max-w-[45ch]"
191
189
>
192
190
<span class="text-sm text-shadow-white text-ralsei-white"
193
193
-
>{data.lastTrack.status === 'playing'
194
194
-
? 'listening to'
195
195
-
: 'listened to'}</span
191
191
+
>{data.lastTrack.status === 'playing' ? 'listening to' : 'listened to'}</span
196
192
>
197
193
<a
198
194
title={data.lastTrack.name}
199
195
href={data.lastTrack.link ??
200
196
'https://tealfm-slice.wisp.place/profile/ptr.pet/scrobbles'}
201
201
-
class="hover:underline motion-safe:hover:animate-squiggle"
202
202
-
>{data.lastTrack.name}</a
197
197
+
class="hover:underline motion-safe:hover:animate-squiggle">{data.lastTrack.name}</a
203
198
>
204
199
</p>
205
200
{#if showAlbum}
···
241
236
<span class="text-sm text-shadow-white text-ralsei-white"
242
237
>{data.lastGame.playing ? 'playing' : 'played'}</span
243
238
>
244
244
-
<a
245
245
-
title={data.lastGame.name}
246
246
-
class="hover:underline"
247
247
-
href={data.lastGame.link}>{data.lastGame.name}</a
239
239
+
<a title={data.lastGame.name} class="hover:underline" href={data.lastGame.link}
240
240
+
>{data.lastGame.name}</a
248
241
>
249
242
</p>
250
243
<p
···
427
420
<li>discord: 90.008</li>
428
421
<li>
429
422
e-mail:
430
430
-
<a class="u-email" href="mailto:90008@gaze.systems" rel="me"
431
431
-
>90008@gaze.systems</a
432
432
-
>
423
423
+
<a class="u-email" href="mailto:90008@gaze.systems" rel="me">90008@gaze.systems</a>
433
424
</li>
434
425
<li>
435
426
bluesky:
···
449
440
</li>
450
441
<li>
451
442
tangled:
452
452
-
<a
453
453
-
class="u-url"
454
454
-
href="https://tangled.org/did:plc:dfl62fgb7wtjj3fcbb72naae"
455
455
-
rel="me">@ptr.pet</a
443
443
+
<a class="u-url" href="https://tangled.org/did:plc:dfl62fgb7wtjj3fcbb72naae" rel="me"
444
444
+
>@ptr.pet</a
456
445
>
457
446
</li>
458
447
<li>
···
468
457
<li>
469
458
<span
470
459
>{coin}:
471
471
-
<a href="/copy?text={wallets[coin]}">{trimStr(wallets[coin])}</a
472
472
-
></span
460
460
+
<a href="/copy?text={wallets[coin]}">{trimStr(wallets[coin])}</a></span
473
461
>
474
462
</li>
475
463
{/each}
476
464
<li>
477
465
<span>
478
478
-
<a href="https://github.com/sponsors/90-008" rel="me"
479
479
-
>github sponsors</a
480
480
-
></span
466
466
+
<a href="https://github.com/sponsors/90-008" rel="me">github sponsors</a></span
481
467
>
482
468
</li>
483
469
</ul>
···
485
471
<details open>
486
472
<summary>88x31</summary>
487
473
<div class="mt-2 flex flex-row flex-wrap gap-1 prose-img:m-0">
488
488
-
<img
489
489
-
src="/88x31.gif"
490
490
-
alt="88x31 banner"
491
491
-
title="midnight AND sunrise! woaw"
492
492
-
/>
474
474
+
<img src="/88x31.gif" alt="88x31 banner" title="midnight AND sunrise! woaw" />
493
475
<img
494
476
src="/88x31_midnight.gif"
495
477
alt="88x31 banner (midnight only)"
496
478
title="it's midnight!"
497
479
/>
498
498
-
<img
499
499
-
src="/88x31_sunrise.gif"
500
500
-
alt="88x31 banner (sunrise only)"
501
501
-
title="it's sunrise!"
502
502
-
/>
480
480
+
<img src="/88x31_sunrise.gif" alt="88x31 banner (sunrise only)" title="it's sunrise!" />
503
481
</div>
504
482
</details>
505
483
</div>
+5
eunomia/src/routes/(site)/about/_layout.svelte
···
14
14
let { title, children }: Props = $props();
15
15
</script>
16
16
17
17
+
<svelte:head>
18
18
+
<meta property="og:description" content="information about entity with ID 90008" />
19
19
+
<meta property="og:type" content="article" />
20
20
+
</svelte:head>
21
21
+
17
22
<div class="flex flex-wrap md:flex-nowrap gap-4 md:gap-8">
18
23
<Window {title} style="ml-auto">
19
24
<div class="prose prose-ralsei leading-6 prose-ul:leading-5 max-w-[80ch]">
+5
eunomia/src/routes/(site)/copy/+page.svelte
···
14
14
let copied = $state(false);
15
15
</script>
16
16
17
17
+
<svelte:head>
18
18
+
<meta property="og:description" content={text} />
19
19
+
<meta property="og:type" content="website" />
20
20
+
</svelte:head>
21
21
+
17
22
<div class="flex justify-center items-center w-[100vw] h-[100vh] px-[15%]">
18
23
<!-- svelte-ignore a11y_click_events_have_key_events -->
19
24
<!-- svelte-ignore a11y_no_static_element_interactions -->
+5
eunomia/src/routes/(site)/entries/+page.svelte
···
14
14
let { data }: Props = $props();
15
15
</script>
16
16
17
17
+
<svelte:head>
18
18
+
<meta property="og:description" content="entries on this endpoint" />
19
19
+
<meta property="og:type" content="website" />
20
20
+
</svelte:head>
21
21
+
17
22
<div class="mx-auto md:max-w-fit flex flex-col-reverse md:flex-row gap-y-4 gap-x-16">
18
23
<div class="flex flex-col gap-y-4">
19
24
{#each data.posts as post (post.path)}
+18
-19
eunomia/src/routes/(site)/guestbook/+page.svelte
···
1
1
<script lang="ts">
2
2
+
import { page } from '$app/state';
2
3
import Note, { type NoteData } from '$components/note.svelte';
3
4
import Token from '$components/token.svelte';
4
5
import Window from '$components/window.svelte';
6
6
+
import getTitle from '$lib/getTitle';
5
7
6
8
interface Props {
7
9
data: {
···
20
22
const placeholders = ['meow', 'arf', '0110100001101001', '0x6869'];
21
23
</script>
22
24
25
25
+
<svelte:head>
26
26
+
<meta property="og:description" content="guestbook for this endpoint" />
27
27
+
<meta property="og:type" content="article" />
28
28
+
</svelte:head>
29
29
+
23
30
<div class="flex flex-col-reverse md:flex-row gap-2 md:gap-4">
24
31
<Window title="guestbook" style="ml-auto" iconUri="/icons/guestbook.webp">
25
32
<div class="flex flex-col gap-1 max-w-[50ch]">
···
35
42
<textarea
36
43
class="p-1 m-0 ml-0.5 bg-transparent resize-none text-shadow-white focus:[box-shadow:none] placeholder-shown:[text-shadow:none] [field-sizing:content] border-none"
37
44
name="content"
38
38
-
placeholder="say {placeholders[
39
39
-
Math.floor(Math.random() * placeholders.length)
40
40
-
]}!"
45
45
+
placeholder="say {placeholders[Math.floor(Math.random() * placeholders.length)]}!"
41
46
maxlength="300"
42
47
required
43
48
></textarea>
···
103
108
<Token v="[" punct />gazesys <Token v="/" keywd /><Token v="]$" punct /> <Token
104
109
v="let"
105
110
funct
106
106
-
/> <Token v="entries" /> <Token v="=" punct /> <Token
107
107
-
v="("
108
108
-
punct
109
109
-
/><Token v="ls" funct /> <Token v="guestbook" /> <Token
111
111
+
/> <Token v="entries" /> <Token v="=" punct /> <Token v="(" punct /><Token
112
112
+
v="ls"
113
113
+
funct
114
114
+
/> <Token v="guestbook" /> <Token v="|" punct /> <Token v="reverse" funct /> <Token
110
115
v="|"
111
116
punct
112
112
-
/> <Token v="reverse" funct /> <Token v="|" punct /> <Token
113
113
-
v="take"
114
114
-
funct
115
115
-
/> <Token v="14" /><Token v=")" punct />
117
117
+
/> <Token v="take" funct /> <Token v="14" /><Token v=")" punct />
116
118
<br />
117
119
<Token v="[" punct />gazesys <Token v="/" keywd /><Token v="]$" punct /> <Token
118
120
v="$entries"
119
119
-
/> <Token v="|" punct /> <Token v="each" funct /> <Token
120
120
-
v="{"
121
121
+
/> <Token v="|" punct /> <Token v="each" funct /> <Token v="{" punct /><Token
122
122
+
v="|"
121
123
punct
122
122
-
/><Token v="|" punct /><Token v="file" /><Token
123
123
-
v="|"
124
124
+
/><Token v="file" /><Token v="|" punct /> <Token v="render" funct /> <Token
125
125
+
v="("
124
126
punct
125
125
-
/> <Token v="render" funct /> <Token v="(" punct /><Token
126
126
-
v="open"
127
127
-
funct
128
128
-
/> <Token v="$file.name" /><Token v=")" punct /><Token
127
127
+
/><Token v="open" funct /> <Token v="$file.name" /><Token v=")" punct /><Token
129
128
v="}"
130
129
punct
131
130
/>