data endpoint for entity 90008 (aka. a website)

more minor fixes

ptr.pet bced32a4 0ccf40f0

verified
Waiting for spindle ...
+47 -35
+11 -4
eunomia/src/components/pet.svelte
··· 178 178 } 179 179 180 180 // Normal movement when not physics-based 181 - let moveByX = moveTowards(position.x, targetX, speed * ((self.innerWidth ?? 1600.0) / 1600.0)); 181 + let moveByX = moveTowards( 182 + position.x, 183 + targetX, 184 + speed * ((self.innerWidth ?? 1600.0) / 1600.0) 185 + ); 182 186 position.x += moveByX; 183 187 184 188 turnStrideWheel(moveByX); ··· 232 236 const viewportWidth = self.innerWidth || null; 233 237 if (viewportWidth !== null && Math.abs(position.x - targetX) < 5) { 234 238 targetX = Math.max( 235 - Math.min(targetX + (Math.random() - 0.5) * (viewportWidth * 0.5), viewportWidth * 0.9), 239 + Math.min( 240 + targetX + (Math.random() - 0.5) * (viewportWidth * 0.5), 241 + viewportWidth * 0.9 242 + ), 236 243 viewportWidth * 0.1 237 244 ); 238 245 } ··· 252 259 applyUserSelectHack: true, 253 260 handle: 'img', 254 261 bounds: { 255 - bottom: (window.innerHeight / 100) * 5.5 262 + bottom: (window.innerHeight / 100) * 5 256 263 }, 257 264 onDragStart: () => { 258 265 sprite = '/pet/pick.webp'; ··· 286 293 dragged = false; 287 294 } 288 295 }} 289 - class="fixed bottom-[5vh] z-[1000] hover:animate-squiggle" 296 + class="fixed bottom-[4.6vh] z-[1000] hover:animate-squiggle" 290 297 style="cursor: url('/icons/gaze.webp'), pointer;" 291 298 > 292 299 <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
+1 -1
eunomia/src/lib/activity.ts
··· 71 71 72 72 activities.push({ 73 73 source: 'tangled', 74 - description: `pushed ${repoName}: ${message}`, 74 + description: `${repoName}: ${message}`, 75 75 link: `https://tangled.sh/${did}/${repoName}/commit/${hash}`, 76 76 date: dateStr ? new Date(dateStr) : null, 77 77 id: hash
+7 -7
eunomia/src/routes/(site)/+page.svelte
··· 120 120 <div class="flex flex-col gap-2 md:gap-6 md:ml-auto place-items-end"> 121 121 <Window title="status" iconUri="/icons/msn.webp" removePadding> 122 122 {#if data.lastNote} 123 - <div class="m-1.5 flex flex-col font-monospace text-sm"> 123 + <div class="m-1.5 flex flex-col font-monospace"> 124 124 <p 125 - class="prose prose-ralsei p-1 border-4 text-sm bg-ralsei-black" 125 + class="prose prose-ralsei leading-tight p-1 border-4 bg-ralsei-black" 126 126 style="border-style: double double none double;" 127 127 title={renderDate(data.lastNote.published)} 128 128 > ··· 137 137 </div> 138 138 {/if} 139 139 {#if data.lastActivity.length > 0} 140 - <div class="m-1.5 flex flex-col font-monospace text-sm"> 140 + <div class="m-1.5 flex flex-col font-monospace"> 141 141 <p 142 - class="prose prose-ralsei p-1 border-4 text-sm bg-ralsei-black" 142 + class="prose prose-ralsei leading-tight p-1 px-1.5 border-4 bg-ralsei-black" 143 143 style="border-style: double double none double;" 144 144 title={renderDate(data.lastActivity[0].date)} 145 145 > ··· 147 147 was {renderRelativeDate(data.lastActivity[0].date)}.. 148 148 </p> 149 149 <div 150 - class="prose prose-ralsei mt-0 p-1.5 border-4 border-double bg-ralsei-black min-w-full max-w-[60ch]" 150 + class="prose prose-ralsei mt-0 leading-tight p-1.5 border-4 border-double bg-ralsei-black min-w-full max-w-[60ch]" 151 151 > 152 152 {#each data.lastActivity as activity, index (index)} 153 153 <div 154 - class="text-ralsei-green-light text-sm text-ellipsis text-nowrap overflow-hidden max-w-[60ch]" 154 + 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};" ··· 403 403 > 404 404 <input 405 405 type="text" 406 - class="entry w-full p-1 m-0 bg-transparent resize-none text-shadow-white placeholder-shown:[text-shadow:none] border-none" 406 + class="entry w-full p-1 m-0 bg-transparent resize-none text-shadow-white focus:[box-shadow:none] placeholder-shown:[text-shadow:none] border-none" 407 407 name="content" 408 408 placeholder="bother it now!!" 409 409 maxlength="100"
+26 -21
eunomia/src/routes/(site)/guestbook/+page.svelte
··· 22 22 23 23 <div class="flex flex-col-reverse md:flex-row gap-2 md:gap-4"> 24 24 <Window title="guestbook" style="ml-auto" iconUri="/icons/guestbook.webp"> 25 - <div class="flex flex-col gap-1 max-w-[50ch] leading-6"> 26 - <div class="prose prose-ralsei leading-6 entry p-2"> 27 - <p>hia, here is the guestbook if you wanna post anything :)</p> 28 - <p>be good pretty please (and don't be shy!!!)</p> 29 - <p class="text-sm italic"> 30 - (to see all the entries, look <a href="https://bsky.app/profile/guestbook.gaze.systems" 31 - >here</a 32 - >) 33 - </p> 25 + <div class="flex flex-col gap-1 max-w-[50ch]"> 26 + <div class="prose prose-ralsei entry p-2"> 27 + hia, here is the guestbook if you wanna post anything :) <br /> 28 + be good pretty please (and don't be shy!!!) <br /> 29 + (to see all the entries, look 30 + <a href="https://bsky.app/profile/guestbook.gaze.systems">here</a>) 34 31 </div> 35 32 <form method="post"> 36 33 <input type="hidden" name="_token" value={data.apiToken} /> 37 34 <div class="entry entryflex"> 38 35 <textarea 39 - class="text-lg p-1 m-0 ml-0.5 bg-transparent resize-none text-shadow-white placeholder-shown:[text-shadow:none] [field-sizing:content] border-none" 36 + 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" 40 37 name="content" 41 - placeholder="say {placeholders[Math.floor(Math.random() * placeholders.length)]}!" 38 + placeholder="say {placeholders[ 39 + Math.floor(Math.random() * placeholders.length) 40 + ]}!" 42 41 maxlength="300" 43 42 required 44 43 ></textarea> ··· 104 103 <Token v="[" punct />gazesys <Token v="/" keywd /><Token v="]$" punct /> <Token 105 104 v="let" 106 105 funct 107 - /> <Token v="entries" /> <Token v="=" punct /> <Token v="(" punct /><Token 108 - v="ls" 109 - funct 110 - /> <Token v="guestbook" /> <Token v="|" punct /> <Token v="reverse" funct /> <Token 106 + /> <Token v="entries" /> <Token v="=" punct /> <Token 107 + v="(" 108 + punct 109 + /><Token v="ls" funct /> <Token v="guestbook" /> <Token 111 110 v="|" 112 111 punct 113 - /> <Token v="take" funct /> <Token v="14" /><Token v=")" punct /> 112 + /> <Token v="reverse" funct /> <Token v="|" punct /> <Token 113 + v="take" 114 + funct 115 + /> <Token v="14" /><Token v=")" punct /> 114 116 <br /> 115 117 <Token v="[" punct />gazesys <Token v="/" keywd /><Token v="]$" punct /> <Token 116 118 v="$entries" 117 - /> <Token v="|" punct /> <Token v="each" funct /> <Token v="&#123;" punct /><Token 119 + /> <Token v="|" punct /> <Token v="each" funct /> <Token 120 + v="&#123;" 121 + punct 122 + /><Token v="|" punct /><Token v="file" /><Token 118 123 v="|" 119 124 punct 120 - /><Token v="file" /><Token v="|" punct /> <Token v="render" funct /> <Token 121 - v="(" 122 - punct 123 - /><Token v="open" funct /> <Token v="$file.name" /><Token v=")" punct /><Token 125 + /> <Token v="render" funct /> <Token v="(" punct /><Token 126 + v="open" 127 + funct 128 + /> <Token v="$file.name" /><Token v=")" punct /><Token 124 129 v="&#125;" 125 130 punct 126 131 />
+2 -2
eunomia/src/styles/app.css
··· 17 17 18 18 @font-face { 19 19 font-family: 'Fusion Pixel 8px Monospaced SC'; 20 - src: url('/fonts/fusion-pixel-sc-monospaced.woff2') format('woff2'); 20 + src: url('/fonts/fusionmono.woff2') format('woff2'); 21 21 font-weight: normal; 22 22 font-style: normal; 23 23 font-display: swap; ··· 25 25 26 26 @font-face { 27 27 font-family: 'Fusion Pixel 8px Proportional SC'; 28 - src: url('/fonts/fusion-pixel-sc-proportional.woff2') format('woff2'); 28 + src: url('/fonts/fusionprop.woff2') format('woff2'); 29 29 font-weight: normal; 30 30 font-style: normal; 31 31 font-display: swap;
eunomia/static/fonts/fusion-pixel-sc-monospaced.woff2 eunomia/static/fonts/fusionmono.woff2
eunomia/static/fonts/fusion-pixel-sc-proportional.woff2 eunomia/static/fonts/fusionprop.woff2