interactive intro to open social at-me.zzstoatzz.io

refactor: replace PDS version with pdsmoover recommendation

- Remove version fetching from health endpoint (not useful info)
- Add pdsmoover.com link for both hosting types:
- Self-hosted: link to their PDS on pdsmoover for account migrations
- Bluesky-hosted: link to pdsmoover to migrate to self-hosted

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+3 -31
+3 -31
src/view/visualization.js
··· 135 135 host.endsWith('.bsky.app'); 136 136 } 137 137 138 - // Fetch PDS health/version info 139 - async function fetchPdsHealth(pdsUrl) { 140 - try { 141 - const response = await fetch(`${pdsUrl}/xrpc/_health`, { 142 - signal: AbortSignal.timeout(5000) 143 - }); 144 - if (response.ok) { 145 - return await response.json(); 146 - } 147 - } catch (e) { 148 - // Health endpoint not available or errored 149 - } 150 - return null; 151 - } 152 - 153 138 function setupIdentityClickHandler(allCollections, appCount, profile) { 154 139 const pdsHost = state.globalPds.replace('https://', '').replace('http://', ''); 155 140 const isSelfHosted = !isBlueskyHostedPds(state.globalPds); 156 141 157 - document.querySelector('.identity').addEventListener('click', async () => { 142 + document.querySelector('.identity').addEventListener('click', () => { 158 143 const detail = document.getElementById('detail'); 159 144 160 145 // Build the hosting status card based on whether self-hosted or Bluesky-hosted ··· 164 149 <div class="ownership-box self-hosted"> 165 150 <div class="ownership-header">🛠️ self-hosted pds</div> 166 151 <div class="ownership-text">you're running your own PDS at <strong>${pdsHost}</strong> - nice! you have full control over your data and identity.</div> 167 - <div id="pdsVersionInfo" class="pds-version-info" style="margin-top: 0.5rem; font-size: 0.65rem; color: var(--text-lighter);">checking version...</div> 152 + <div style="margin-top: 0.5rem; font-size: 0.6rem; color: var(--text-lighter);">use <a href="https://pdsmoover.com/moover/${pdsHost}" target="_blank" rel="noopener noreferrer" style="color: var(--text); text-decoration: underline;">pdsmoover</a> to migrate accounts to your PDS.</div> 168 153 </div> 169 154 `; 170 155 } else { ··· 172 157 <div class="ownership-box bluesky-hosted"> 173 158 <div class="ownership-header">☁️ bluesky-hosted pds</div> 174 159 <div class="ownership-text">your data is hosted on bluesky's infrastructure. this is the default and works great! but if you want more control, you can <a href="https://atproto.com/guides/self-hosting" target="_blank" rel="noopener noreferrer" style="color: var(--text); text-decoration: underline; font-weight: 500;">self-host your own PDS</a>.</div> 175 - <div style="margin-top: 0.5rem; font-size: 0.6rem; color: var(--text-lighter);">self-hosting means you control the server where your posts, likes, and follows live. you can migrate your data anytime.</div> 160 + <div style="margin-top: 0.5rem; font-size: 0.6rem; color: var(--text-lighter);">use <a href="https://pdsmoover.com" target="_blank" rel="noopener noreferrer" style="color: var(--text); text-decoration: underline;">pdsmoover</a> to migrate your account to a self-hosted PDS.</div> 176 161 </div> 177 162 `; 178 163 } ··· 239 224 e.stopPropagation(); 240 225 detail.classList.remove('visible'); 241 226 }); 242 - 243 - // Fetch PDS version info asynchronously for self-hosted PDSes 244 - if (isSelfHosted) { 245 - const healthInfo = await fetchPdsHealth(state.globalPds); 246 - const versionEl = document.getElementById('pdsVersionInfo'); 247 - if (versionEl) { 248 - if (healthInfo?.version) { 249 - versionEl.textContent = `pds version: ${healthInfo.version}`; 250 - } else { 251 - versionEl.textContent = 'version info not available'; 252 - } 253 - } 254 - } 255 227 }); 256 228 } 257 229