alpha
Login
or
Join now
zephyra.zone
/
grain
Star
1
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
grain.social is a photo sharing platform built on atproto.
Star
1
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
grain
/
server
/
at
main
9 folders
Chad Miller
feat: add owner-only gallery edit page
5w ago
b5a1f49b
feeds
feat: add owner-only gallery edit page Adds a full edit UI at /profile/[did]/gallery/[rkey]/edit, accessible via the overflow menu on gallery cards for the owner account. Supports editing title, description, location, and labels; replacing, adding, removing, and reordering photos using the same canvas resize pipeline as the create flow; and per-photo alt text. Also populates the galleryState field (item URI and position) on photoViews in the hydration layer so the edit page can update and delete gallery.item records without extra fetches. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 month ago
filters
feat: add blocks and mutes (#10) - Block/mute records with bidirectional content filtering on feeds, stories, comments, and notifications - Muted comments returned with `muted` flag for client-side collapse/expand UI - Blocked comments removed entirely from threads - Settings > Moderation > Blocked Users / Muted Users management pages - Block/mute state shown on profile pages with overflow menu actions - Self-block prevention, query invalidation on mutations - Lexicons for block record, muteActor/unmuteActor procedures, getBlocks/getMutes queries - getSuggestedFollows excludes blocked/muted users - getActorProfile uses authenticated viewer instead of params.viewer - getMutes cursor aligned with getBlocks (packCursor/unpackCursor) - Seeds with block test records Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
helpers
fix: consistent country display across sidebar and gallery cards - getLocations: use normalised ISO-2 code in multi-part display names so all rows in a group render identically (fixes "Portland, Oregon, USA" appearing alongside "...US" entries). Country-only groups expand to the full country name via Intl.DisplayNames ("GR" → "Greece"). - country helper: add name→code reverse lookup so clicking "Greece" in the sidebar still matches records stored as "GR". Brute-forces 2-letter codes since Intl.supportedValuesOf doesn't accept "region". Prefers earlier alphabetical codes when names collide (GB wins over UK). - formatStoredLocation: normalise the country tail on gallery cards and suppress it when the primary label already names the country (fixes "Greece, GR" on the gallery card).
2 months ago
hooks
feat: add comment favorites with notifications Add ability to favorite comments using the existing social.grain.favorite lexicon. Adds favCount and viewer state to the comment view, hydrates favorites in getCommentThread, sends push notifications for comment favorites, and includes comment-favorite in the notification feed with grouping support. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
hydrate
feat: add owner-only gallery edit page Adds a full edit UI at /profile/[did]/gallery/[rkey]/edit, accessible via the overflow menu on gallery cards for the owner account. Supports editing title, description, location, and labels; replacing, adding, removing, and reordering photos using the same canvas resize pipeline as the create flow; and per-photo alt text. Also populates the galleryState field (item URI and position) on photoViews in the hydration layer so the edit page can update and delete gallery.item records without extra fetches. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 month ago
labels
feat: content labels with self-label hydration and improved warning UX Hydrate self-labels from record child tables for galleries and stories. Add ContentWarningPicker to gallery and story create forms with form field labels. Replace blur with opaque overlay and Bluesky-style warning bar across feed, stories, and profile grid. Add label schema for stories. Clean up orphaned CSS and normalize location input styling. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
og
fix: resolve handles in profile OG endpoint Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
setup
feat: add blocks and mutes (#10) - Block/mute records with bidirectional content filtering on feeds, stories, comments, and notifications - Muted comments returned with `muted` flag for client-side collapse/expand UI - Blocked comments removed entirely from threads - Settings > Moderation > Blocked Users / Muted Users management pages - Block/mute state shown on profile pages with overflow menu actions - Self-block prevention, query invalidation on mutations - Lexicons for block record, muteActor/unmuteActor procedures, getBlocks/getMutes queries - getSuggestedFollows excludes blocked/muted users - getActorProfile uses authenticated viewer instead of params.viewer - getMutes cursor aligned with getBlocks (packCursor/unpackCursor) - Seeds with block test records Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
3 months ago
xrpc
fix: consistent country display across sidebar and gallery cards - getLocations: use normalised ISO-2 code in multi-part display names so all rows in a group render identically (fixes "Portland, Oregon, USA" appearing alongside "...US" entries). Country-only groups expand to the full country name via Intl.DisplayNames ("GR" → "Greece"). - country helper: add name→code reverse lookup so clicking "Greece" in the sidebar still matches records stored as "GR". Brute-forces 2-letter codes since Intl.supportedValuesOf doesn't accept "region". Prefers earlier alphabetical codes when names collide (GB wins over UK). - formatStoredLocation: normalise the country tail on gallery cards and suppress it when the primary label already names the country (fixes "Greece, GR" on the gallery card).
2 months ago