forked from pdsls.dev/pdsls
this repo has no description

Compare changes

Choose any two refs to compare.

+1 -1
.nvmrc
··· 1 - 24.4.1 1 + 24
+11
README.md
··· 2 2 3 3 Navigate and manage [atproto](https://atproto.com/) repositories and the records they contain, as well as watching the relay in real time (firehose + jetstream support). 4 4 5 + ### Hacking 6 + 7 + You will need `node` and `pnpm` to get started: 8 + 9 + ``` 10 + pnpm i # install deps 11 + pnpm dev # or pnpm run start, runs vite 12 + pnpm build # runs vite build 13 + pnpm serve # runs vite preview 14 + ``` 15 + 5 16 ### Credits 6 17 7 18 [atcute](https://github.com/mary-ext/atcute) - atproto SDK\
-1
index.html
··· 9 9 <meta property="og:url" content="https://pdsls.dev" /> 10 10 <meta property="og:description" content="Browse and manage atproto repositories" /> 11 11 <meta property="description" content="Browse and manage atproto repositories" /> 12 - <title>PDSls</title> 13 12 <script> 14 13 if ( 15 14 localStorage.theme === "dark" ||
+1 -1
package.json
··· 9 9 "serve": "vite preview" 10 10 }, 11 11 "devDependencies": { 12 - "@iconify-json/lucide": "^1.2.61", 12 + "@iconify-json/lucide": "^1.2.62", 13 13 "@iconify-json/lucide-lab": "^1.2.3", 14 14 "prettier": "^3.6.2", 15 15 "prettier-plugin-tailwindcss": "^0.6.14",
+5 -5
pnpm-lock.yaml
··· 76 76 version: 1.9.8 77 77 devDependencies: 78 78 '@iconify-json/lucide': 79 - specifier: ^1.2.61 80 - version: 1.2.61 79 + specifier: ^1.2.62 80 + version: 1.2.62 81 81 '@iconify-json/lucide-lab': 82 82 specifier: ^1.2.3 83 83 version: 1.2.3 ··· 556 556 '@iconify-json/lucide-lab@1.2.3': 557 557 resolution: {integrity: sha512-N+8vnVt4IY/6FZi81f6nh5VhJSMYrs5KTVsT2Z/E0Wn7Lu4jJKO5fOfiTVX1YWVI4FFwQ1zVXPFb8kLAwskrjA==} 558 558 559 - '@iconify-json/lucide@1.2.61': 560 - resolution: {integrity: sha512-0sLmi3vyEsJ6XL/uhl0a+uphdYIW1viYkUmiuT4SK3e2R3o3GIWY9k8N+SZL++GVBbMKy9oatx8KrzyoPZ6WqQ==} 559 + '@iconify-json/lucide@1.2.62': 560 + resolution: {integrity: sha512-K0KfhvP5YQZ2KraOgCm6jJbwwzQCVocvXcdMpDou5uLa48QnLBRW/dQ8VDGmxHTGpwF9EqLlvnUSinH2i6xs3Q==} 561 561 562 562 '@iconify/types@2.0.0': 563 563 resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} ··· 1706 1706 dependencies: 1707 1707 '@iconify/types': 2.0.0 1708 1708 1709 - '@iconify-json/lucide@1.2.61': 1709 + '@iconify-json/lucide@1.2.62': 1710 1710 dependencies: 1711 1711 '@iconify/types': 2.0.0 1712 1712
+1 -1
src/components/search.tsx
··· 51 51 > 52 52 <div class="w-full"> 53 53 <label for="input" class="ml-0.5 text-sm"> 54 - PDS URL or AT URI 54 + PDS URL or AT URI (at:// optional) 55 55 </label> 56 56 </div> 57 57 <div class="flex w-full items-center gap-2">
+11 -6
src/layout.tsx
··· 7 7 import { Search } from "./components/search.jsx"; 8 8 import { AccountManager } from "./components/account.jsx"; 9 9 import { resolveHandle } from "./utils/api.js"; 10 - import { Meta, MetaProvider } from "@solidjs/meta"; 10 + import { Meta, MetaProvider, Title } from "@solidjs/meta"; 11 11 import { kawaii, Settings } from "./components/settings.jsx"; 12 12 import { Handle } from "@atcute/lexicons"; 13 13 import { copyNotice } from "./utils/copy.js"; 14 + 15 + const customTitle: Record<string, string> = { 16 + "did:plc:hx53snho72xoj7zqt5uice4u": "wrenls", 17 + }; 14 18 15 19 const Layout = (props: RouteSectionProps<unknown>) => { 16 20 const params = useParams(); ··· 27 31 28 32 return ( 29 33 <div id="main" class="m-4 flex flex-col items-center text-slate-900 dark:text-slate-100"> 30 - <Show when={location.pathname !== "/"}> 31 - <MetaProvider> 34 + <MetaProvider> 35 + <Show when={location.pathname !== "/"}> 32 36 <Meta name="robots" content="noindex, nofollow" /> 33 - </MetaProvider> 34 - </Show> 37 + </Show> 38 + <Title>{customTitle[params.repo] ?? "PDSls"}</Title> 39 + </MetaProvider> 35 40 <div class="mb-2 flex w-[21rem] items-center sm:w-[24rem]"> 36 41 <div class="flex basis-1/3 gap-x-2"> 37 42 <A href="/jetstream"> ··· 43 48 </div> 44 49 <div class="flex basis-1/3 items-center justify-center text-center"> 45 50 <A href="/" class="font-mono font-bold hover:underline"> 46 - PDSls 51 + {customTitle[params.repo] ?? "PDSls"} 47 52 </A> 48 53 <Show when={localStorage.kawaii === "true" || kawaii()}> 49 54 <a
+5
src/views/home.tsx
··· 72 72 <div class="i-lucide-github text-xl" /> 73 73 </A> 74 74 </Tooltip> 75 + <Tooltip text="Tangled"> 76 + <A href="https://tangled.sh/@pdsls.dev/pdsls/" target="_blank"> 77 + <div class="i-lucide-line-squiggle text-xl" /> 78 + </A> 79 + </Tooltip> 75 80 <Tooltip text="Bluesky"> 76 81 <A href="https://bsky.app/profile/did:plc:6q5daed5gutiyerimlrnojnz" target="_blank"> 77 82 <div class="i-tabler-brand-bluesky text-xl" />
+3 -1
src/views/pds.tsx
··· 119 119 </> 120 120 )} 121 121 </Show> 122 - <p class="w-full font-semibold text-stone-600 dark:text-stone-400">Repositories</p> 122 + <p class="w-full font-semibold text-stone-600 dark:text-stone-400"> 123 + {repos()?.length} Repositories 124 + </p> 123 125 <For each={repos()}> 124 126 {(repo) => ( 125 127 <A
+1 -1
src/views/record.tsx
··· 131 131 <Show when={record()}> 132 132 <div class="dark:shadow-dark-900/80 dark:bg-dark-300 my-3 flex gap-3 rounded-full bg-white px-2.5 py-2 shadow-sm"> 133 133 <Tooltip text="Copy record"> 134 - <button onclick={() => addToClipboard(JSON.stringify(record()?.value))}> 134 + <button onclick={() => addToClipboard(JSON.stringify(record()?.value, null, 2))}> 135 135 <div class="i-lucide-copy text-xl" /> 136 136 </button> 137 137 </Tooltip>