frontend for xcvr appview

update to reflect new stuff, doesn't currently resolve for alt channel hosts

+13 -17
+3 -2
src/lib/types.ts
··· 134 export type SignetView = { 135 $type?: string 136 uri: string 137 - issuerHandle: string 138 channelURI: string 139 lrcId: number 140 - authorHandle: string 141 startedAt: string 142 } 143
··· 134 export type SignetView = { 135 $type?: string 136 uri: string 137 + issuer: string 138 channelURI: string 139 lrcId: number 140 + author: string 141 + authorHandle?: string 142 startedAt: string 143 } 144
+6 -4
src/lib/wscontext.svelte.ts
··· 496 signetView: signet 497 }) 498 } 499 - this.existinguris.set(signet.uri, signet.authorHandle) 500 } 501 502 addMessageView = (message: xcvr.MessageView) => { 503 - if (this.existinguris.get(message.signetURI) === message.author.handle) { 504 this.items = this.items.map((item: xcvr.Item) => { 505 return item.signetView?.uri === message.signetURI && isMessage(item) 506 ? { ...item, type: "message", messageView: message } ··· 517 console.log("called add imageview when i don't have an imageview") 518 return 519 } 520 - if (this.existinguris.get(media.signetURI)) { 521 this.items = this.items.map((item: xcvr.Item) => { 522 return item.signetView?.uri === media.signetURI && isImage(item) ? 523 { ...item, type: "image", mediaView: media } : item ··· 621 const issuerHandle = lex.issuerHandle 622 const channelURI = lex.channelURI 623 const lrcID = lex.lrcID 624 const authorHandle = lex.authorHandle 625 const startedAt = lex.startedAt 626 ctx.addSignet({ 627 $type: "org.xcvr.lrc.defs#signetView", 628 uri: uri, 629 - issuerHandle: issuerHandle, 630 channelURI: channelURI, 631 lrcId: lrcID, 632 authorHandle: authorHandle, 633 startedAt: startedAt 634 })
··· 496 signetView: signet 497 }) 498 } 499 + this.existinguris.set(signet.uri, signet.author) 500 } 501 502 addMessageView = (message: xcvr.MessageView) => { 503 + if (this.existinguris.get(message.signetURI) === message.author.did) { 504 this.items = this.items.map((item: xcvr.Item) => { 505 return item.signetView?.uri === message.signetURI && isMessage(item) 506 ? { ...item, type: "message", messageView: message } ··· 517 console.log("called add imageview when i don't have an imageview") 518 return 519 } 520 + if (this.existinguris.get(media.signetURI) === media.author.did) { 521 this.items = this.items.map((item: xcvr.Item) => { 522 return item.signetView?.uri === media.signetURI && isImage(item) ? 523 { ...item, type: "image", mediaView: media } : item ··· 621 const issuerHandle = lex.issuerHandle 622 const channelURI = lex.channelURI 623 const lrcID = lex.lrcID 624 + const author = lex.author 625 const authorHandle = lex.authorHandle 626 const startedAt = lex.startedAt 627 ctx.addSignet({ 628 $type: "org.xcvr.lrc.defs#signetView", 629 uri: uri, 630 + issuer: issuerHandle, 631 channelURI: channelURI, 632 lrcId: lrcID, 633 + author: author, 634 authorHandle: authorHandle, 635 startedAt: startedAt 636 })
-8
src/routes/+page.svelte
··· 147 hi! i'm <a href="/p/moth11.net">rachel</a> and i'd like to welcome you to xcvr 148 (pronounced transceiver)! 149 </p> 150 - <p>UPDATE AS OF MONDAY NOVEMBER 17 2025</p> 151 - <p>XCVR WILL BE DOWN FOR MAINTENANCE AFTER 6PM EST FOR A FEW DAYS</p> 152 - <p> 153 - i need to switch hosting providers, and i'm making a few changes to the 154 - lexicon, and i think that the current xcvr.org account will be migrated to 155 - legacy.xcvr.org, and i'm going to make the new xcvr.org use did:web 156 - </p> 157 - <p>WE'LL BE BACK SHORTLY</p> 158 <p> 159 tune in to a channel <span class="desktop">(to the left)</span> 160 <span class="mobile">(press aaaaa)</span> and start chatting, make your own,
··· 147 hi! i'm <a href="/p/moth11.net">rachel</a> and i'd like to welcome you to xcvr 148 (pronounced transceiver)! 149 </p> 150 <p> 151 tune in to a channel <span class="desktop">(to the left)</span> 152 <span class="mobile">(press aaaaa)</span> and start chatting, make your own,
+4 -3
src/routes/c/create/+page.svelte
··· 1 <script lang="ts"> 2 let title = $state(""); 3 let topic = $state(""); 4 - let host = $state("xcvr.org"); 5 const graphemes = (text: string) => { 6 if (Intl.Segmenter) { 7 const segmenter = new Intl.Segmenter("en", { granularity: "grapheme" }); ··· 71 <div class="beeper {hostValid ? 'valid' : ''}"> 72 <label for="host"> 73 this is the channel host. you can put whatever you want here, but if the 74 - given url does not host xcvr channels, or if they do but they don't like 75 you in particular, then your channel will not exactly "work." freedom of 76 - speech, but not a right to a platform. 77 </label> 78 <input 79 type="text"
··· 1 <script lang="ts"> 2 let title = $state(""); 3 let topic = $state(""); 4 + let host = $state("did:web:xcvr.org"); 5 const graphemes = (text: string) => { 6 if (Intl.Segmenter) { 7 const segmenter = new Intl.Segmenter("en", { granularity: "grapheme" }); ··· 71 <div class="beeper {hostValid ? 'valid' : ''}"> 72 <label for="host"> 73 this is the channel host. you can put whatever you want here, but if the 74 + given did does not host xcvr channels, or if they do but they don't like 75 you in particular, then your channel will not exactly "work." freedom of 76 + speech, but not a right to a platform. likely just leave it as 77 + did:web:xcvr.org as of nov 26 2025 78 </label> 79 <input 80 type="text"