commits
Security:
- escapeHtml: add single-quote escaping, type guard for non-string input
- Escape originalUrl in all href attributes (footer, header engage links,
repostedBy "other people" link, quotes link)
Developer experience:
- Add console.warn for missing/invalid URI attribute
- Add console.warn in fetchJson for API errors and network failures
(was completely silent before)
Quality:
- Deduplicate <style> injection — styles now go into document.head once
via an id-guarded style element instead of being inlined per-instance
- Fix misplaced JSDoc: "Format repostedBy" was above shuffle()
- Add .DS_Store to .gitignore
- Add author field to package.json
hide-reply.mjs:
- Differentiate "record not found" from network/auth errors in catch
blocks to avoid silently overwriting existing threadgate/postgate data
README:
- Fix "detach your post from a quoted post" (was backwards)
- Clarify graceful degradation: thread fetch failure = empty render
formatRepostedBy was pushing an 'and X other people' suffix into
the names array then passing it to oxfordComma(), which added a
second 'and' before the last item. Also handled the case where
the repostedBy array is empty but repostCount is non-zero (API
returns up to 25 but the count can be higher).
Merged the header template and custom theme demos into one.
Uses a more distinctive template style ("People are talking!
3 people have replied...") instead of mirroring the default format.
Shows the built-in .dark class convention and how to use
prefers-color-scheme for sites with different dark mode patterns.
Custom properties were declared on the inner .bsky-conversation div,
which blocked inheritance from the host element. Moved light-mode
defaults into var() fallbacks so overrides on <bsky-conversation>
cascade through correctly. Also added hide-reply usage docs to README.
CLI tool to hide replies (threadgate) or detach quotes (postgate)
from conversations. Uses @atproto/lex SDK as a dev dependency.
Shows basic usage, custom header template with shallow depth,
and original post display with purple CSS theme overrides.
Zero-dependency ES module that displays a Bluesky conversation thread.
Converted from IIFE to ES module — exports BskyConversation class,
auto-registers the custom element on import.
Security:
- escapeHtml: add single-quote escaping, type guard for non-string input
- Escape originalUrl in all href attributes (footer, header engage links,
repostedBy "other people" link, quotes link)
Developer experience:
- Add console.warn for missing/invalid URI attribute
- Add console.warn in fetchJson for API errors and network failures
(was completely silent before)
Quality:
- Deduplicate <style> injection — styles now go into document.head once
via an id-guarded style element instead of being inlined per-instance
- Fix misplaced JSDoc: "Format repostedBy" was above shuffle()
- Add .DS_Store to .gitignore
- Add author field to package.json
hide-reply.mjs:
- Differentiate "record not found" from network/auth errors in catch
blocks to avoid silently overwriting existing threadgate/postgate data
README:
- Fix "detach your post from a quoted post" (was backwards)
- Clarify graceful degradation: thread fetch failure = empty render