diff --git a/Makefile b/Makefile
index ae5a12eb8d..c90abb783e 100644
--- a/Makefile
+++ b/Makefile
@@ -10,6 +10,7 @@ help: ## Print info about all commands
.PHONY: build-web
build-web: ## Compile web bundle, copy to bskyweb directory
+ yarn intl:build
yarn build-web
.PHONY: test
diff --git a/app.config.js b/app.config.js
index d16b494d09..4db454c826 100644
--- a/app.config.js
+++ b/app.config.js
@@ -9,12 +9,12 @@ module.exports = function () {
/**
* iOS build number. Must be incremented for each TestFlight version.
*/
- const IOS_BUILD_NUMBER = '2'
+ const IOS_BUILD_NUMBER = '5'
/**
* Android build number. Must be incremented for each release.
*/
- const ANDROID_VERSION_CODE = 49
+ const ANDROID_VERSION_CODE = 51
/**
* Uses built-in Expo env vars
diff --git a/assets/icon-android-foreground.png b/assets/icon-android-foreground.png
index 7a6d477d6f..61e788747f 100644
Binary files a/assets/icon-android-foreground.png and b/assets/icon-android-foreground.png differ
diff --git a/assets/icon.png b/assets/icon.png
index 7dc2c31a67..75866fc827 100644
Binary files a/assets/icon.png and b/assets/icon.png differ
diff --git a/assets/splash-with-logo.png b/assets/splash-with-logo.png
deleted file mode 100644
index d012d724c2..0000000000
Binary files a/assets/splash-with-logo.png and /dev/null differ
diff --git a/assets/splash.png b/assets/splash.png
index 603f1f3791..fbba8e258a 100644
Binary files a/assets/splash.png and b/assets/splash.png differ
diff --git a/bskyweb/Makefile b/bskyweb/Makefile
index e0ba8aec06..6f979fa849 100644
--- a/bskyweb/Makefile
+++ b/bskyweb/Makefile
@@ -42,4 +42,4 @@ check: ## Compile everything, checking syntax (does not output binaries)
.PHONY: run-dev-bskyweb
run-dev-bskyweb: .env ## Runs 'bskyweb' for local dev
- GOLOG_LOG_LEVEL=info go run ./cmd/bskyweb serve --debug
+ GOLOG_LOG_LEVEL=info go run ./cmd/bskyweb serve
diff --git a/bskyweb/cmd/bskyweb/rss.go b/bskyweb/cmd/bskyweb/rss.go
new file mode 100644
index 0000000000..f7caf8fe75
--- /dev/null
+++ b/bskyweb/cmd/bskyweb/rss.go
@@ -0,0 +1,99 @@
+package main
+
+import (
+ "fmt"
+ "net/http"
+
+ appbsky "github.com/bluesky-social/indigo/api/bsky"
+ "github.com/bluesky-social/indigo/atproto/syntax"
+
+ "github.com/labstack/echo/v4"
+)
+
+// We don't actually populate the title for "posts".
+// Some background: https://book.micro.blog/rss-for-microblogs/
+type Item struct {
+ Title string `xml:"title,omitempty"`
+ Link string `xml:"link,omitempty"`
+ Description string `xml:"description,omitempty"`
+ PubDate string `xml:"pubDate,omitempty"`
+ Author string `xml:"author,omitempty"`
+ GUID string `xml:"guid,omitempty"`
+}
+
+type rss struct {
+ Version string `xml:"version,attr"`
+ Description string `xml:"channel>description,omitempty"`
+ Link string `xml:"channel>link"`
+ Title string `xml:"channel>title"`
+
+ Item []Item `xml:"channel>item"`
+}
+
+func (srv *Server) WebProfileRSS(c echo.Context) error {
+ ctx := c.Request().Context()
+
+ didParam := c.Param("did")
+ did, err := syntax.ParseDID(didParam)
+ if err != nil {
+ return echo.NewHTTPError(400, fmt.Sprintf("not a valid DID: %s", didParam))
+ }
+
+ // check that public view is Ok
+ pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, did.String())
+ if err != nil {
+ return echo.NewHTTPError(404, fmt.Sprintf("account not found: %s", did))
+ }
+ for _, label := range pv.Labels {
+ if label.Src == pv.Did && label.Val == "!no-unauthenticated" {
+ return echo.NewHTTPError(403, fmt.Sprintf("account does not allow public views: %s", did))
+ }
+ }
+
+ af, err := appbsky.FeedGetAuthorFeed(ctx, srv.xrpcc, did.String(), "", "", 30)
+ if err != nil {
+ log.Warn("failed to fetch author feed", "did", did, "err", err)
+ return err
+ }
+
+ posts := []Item{}
+ for _, p := range af.Feed {
+ // only include author's own posts in RSS
+ if p.Post.Author.Did != pv.Did {
+ continue
+ }
+ aturi, err := syntax.ParseATURI(p.Post.Uri)
+ if err != nil {
+ return err
+ }
+ rec := p.Post.Record.Val.(*appbsky.FeedPost)
+ // only top-level posts in RSS (no replies)
+ if rec.Reply != nil {
+ continue
+ }
+ posts = append(posts, Item{
+ Link: fmt.Sprintf("https://bsky.app/profile/%s/post/%s", pv.Handle, aturi.RecordKey().String()),
+ Description: rec.Text,
+ PubDate: rec.CreatedAt,
+ Author: "@" + pv.Handle,
+ GUID: aturi.String(),
+ })
+ }
+
+ title := "@" + pv.Handle
+ if pv.DisplayName != nil {
+ title = title + " - " + *pv.DisplayName
+ }
+ desc := ""
+ if pv.Description != nil {
+ desc = *pv.Description
+ }
+ feed := &rss{
+ Version: "2.0",
+ Description: desc,
+ Link: fmt.Sprintf("https://bsky.app/profile/%s", pv.Handle),
+ Title: title,
+ Item: posts,
+ }
+ return c.XML(http.StatusOK, feed)
+}
diff --git a/bskyweb/cmd/bskyweb/server.go b/bskyweb/cmd/bskyweb/server.go
index 6cf54a9ef4..5d9a481fe2 100644
--- a/bskyweb/cmd/bskyweb/server.go
+++ b/bskyweb/cmd/bskyweb/server.go
@@ -15,7 +15,8 @@ import (
"time"
appbsky "github.com/bluesky-social/indigo/api/bsky"
- cliutil "github.com/bluesky-social/indigo/cmd/gosky/util"
+ "github.com/bluesky-social/indigo/atproto/syntax"
+ "github.com/bluesky-social/indigo/util/cliutil"
"github.com/bluesky-social/indigo/xrpc"
"github.com/bluesky-social/social-app/bskyweb"
@@ -208,6 +209,9 @@ func serve(cctx *cli.Context) error {
e.GET("/profile/:handle/feed/:rkey", server.WebGeneric)
e.GET("/profile/:handle/feed/:rkey/liked-by", server.WebGeneric)
+ // profile RSS feed (DID not handle)
+ e.GET("/profile/:did/rss", server.WebProfileRSS)
+
// post endpoints; only first populates info
e.GET("/profile/:handle/post/:rkey", server.WebPost)
e.GET("/profile/:handle/post/:rkey/liked-by", server.WebGeneric)
@@ -285,73 +289,87 @@ func (srv *Server) WebHome(c echo.Context) error {
}
func (srv *Server) WebPost(c echo.Context) error {
+ ctx := c.Request().Context()
data := pongo2.Context{}
- handle := c.Param("handle")
- rkey := c.Param("rkey")
- // sanity check argument
- if len(handle) > 4 && len(handle) < 128 && len(rkey) > 0 {
- ctx := c.Request().Context()
- // requires two fetches: first fetch profile (!)
- pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, handle)
- if err != nil {
- log.Warnf("failed to fetch handle: %s\t%v", handle, err)
- } else {
- unauthedViewingOkay := true
- for _, label := range pv.Labels {
- if label.Src == pv.Did && label.Val == "!no-unauthenticated" {
- unauthedViewingOkay = false
- }
- }
- if unauthedViewingOkay {
- did := pv.Did
- data["did"] = did
+ // sanity check arguments. don't 4xx, just let app handle if not expected format
+ rkeyParam := c.Param("rkey")
+ rkey, err := syntax.ParseRecordKey(rkeyParam)
+ if err != nil {
+ return c.Render(http.StatusOK, "post.html", data)
+ }
+ handleParam := c.Param("handle")
+ handle, err := syntax.ParseHandle(handleParam)
+ if err != nil {
+ return c.Render(http.StatusOK, "post.html", data)
+ }
+ handle = handle.Normalize()
- // then fetch the post thread (with extra context)
- uri := fmt.Sprintf("at://%s/app.bsky.feed.post/%s", did, rkey)
- tpv, err := appbsky.FeedGetPostThread(ctx, srv.xrpcc, 1, uri)
- if err != nil {
- log.Warnf("failed to fetch post: %s\t%v", uri, err)
- } else {
- req := c.Request()
- postView := tpv.Thread.FeedDefs_ThreadViewPost.Post
- data["postView"] = postView
- data["requestURI"] = fmt.Sprintf("https://%s%s", req.Host, req.URL.Path)
- if postView.Embed != nil && postView.Embed.EmbedImages_View != nil {
- data["imgThumbUrl"] = postView.Embed.EmbedImages_View.Images[0].Thumb
- }
- }
- }
+ // requires two fetches: first fetch profile (!)
+ pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, handle.String())
+ if err != nil {
+ log.Warnf("failed to fetch handle: %s\t%v", handle, err)
+ return c.Render(http.StatusOK, "post.html", data)
+ }
+ unauthedViewingOkay := true
+ for _, label := range pv.Labels {
+ if label.Src == pv.Did && label.Val == "!no-unauthenticated" {
+ unauthedViewingOkay = false
}
+ }
+ if !unauthedViewingOkay {
+ return c.Render(http.StatusOK, "post.html", data)
+ }
+ did := pv.Did
+ data["did"] = did
+
+ // then fetch the post thread (with extra context)
+ uri := fmt.Sprintf("at://%s/app.bsky.feed.post/%s", did, rkey)
+ tpv, err := appbsky.FeedGetPostThread(ctx, srv.xrpcc, 1, 0, uri)
+ if err != nil {
+ log.Warnf("failed to fetch post: %s\t%v", uri, err)
+ return c.Render(http.StatusOK, "post.html", data)
+ }
+ req := c.Request()
+ postView := tpv.Thread.FeedDefs_ThreadViewPost.Post
+ data["postView"] = postView
+ data["requestURI"] = fmt.Sprintf("https://%s%s", req.Host, req.URL.Path)
+ if postView.Embed != nil && postView.Embed.EmbedImages_View != nil {
+ data["imgThumbUrl"] = postView.Embed.EmbedImages_View.Images[0].Thumb
}
return c.Render(http.StatusOK, "post.html", data)
}
func (srv *Server) WebProfile(c echo.Context) error {
+ ctx := c.Request().Context()
data := pongo2.Context{}
- handle := c.Param("handle")
- // sanity check argument
- if len(handle) > 4 && len(handle) < 128 {
- ctx := c.Request().Context()
- pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, handle)
- if err != nil {
- log.Warnf("failed to fetch handle: %s\t%v", handle, err)
- } else {
- unauthedViewingOkay := true
- for _, label := range pv.Labels {
- if label.Src == pv.Did && label.Val == "!no-unauthenticated" {
- unauthedViewingOkay = false
- }
- }
- if unauthedViewingOkay {
- req := c.Request()
- data["profileView"] = pv
- data["requestURI"] = fmt.Sprintf("https://%s%s", req.Host, req.URL.Path)
- }
+
+ // sanity check arguments. don't 4xx, just let app handle if not expected format
+ handleParam := c.Param("handle")
+ handle, err := syntax.ParseHandle(handleParam)
+ if err != nil {
+ return c.Render(http.StatusOK, "profile.html", data)
+ }
+ handle = handle.Normalize()
+
+ pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, handle.String())
+ if err != nil {
+ log.Warnf("failed to fetch handle: %s\t%v", handle, err)
+ return c.Render(http.StatusOK, "profile.html", data)
+ }
+ unauthedViewingOkay := true
+ for _, label := range pv.Labels {
+ if label.Src == pv.Did && label.Val == "!no-unauthenticated" {
+ unauthedViewingOkay = false
}
}
-
+ if !unauthedViewingOkay {
+ return c.Render(http.StatusOK, "profile.html", data)
+ }
+ req := c.Request()
+ data["profileView"] = pv
+ data["requestURI"] = fmt.Sprintf("https://%s%s", req.Host, req.URL.Path)
return c.Render(http.StatusOK, "profile.html", data)
}
diff --git a/bskyweb/example.env b/bskyweb/example.env
index f8a45d7fc0..80adc15550 100644
--- a/bskyweb/example.env
+++ b/bskyweb/example.env
@@ -1,2 +1,2 @@
GOLOG_LOG_LEVEL=info
-ATP_APPVIEW_HOST=https://api.bsky.app
+ATP_APPVIEW_HOST=https://public.api.bsky.app
diff --git a/bskyweb/go.mod b/bskyweb/go.mod
index bc513727c7..0989217cac 100644
--- a/bskyweb/go.mod
+++ b/bskyweb/go.mod
@@ -3,88 +3,104 @@ module github.com/bluesky-social/social-app/bskyweb
go 1.21
require (
- github.com/bluesky-social/indigo v0.0.0-20230504025040-8915cccc3319
+ github.com/bluesky-social/indigo v0.0.0-20231216010655-ad730a7da4f5
github.com/flosch/pongo2/v6 v6.0.0
github.com/ipfs/go-log v1.0.5
github.com/joho/godotenv v1.5.1
- github.com/klauspost/compress v1.16.5
- github.com/labstack/echo/v4 v4.10.2
- github.com/urfave/cli/v2 v2.25.3
+ github.com/klauspost/compress v1.17.3
+ github.com/labstack/echo/v4 v4.11.3
+ github.com/urfave/cli/v2 v2.25.7
)
require (
- github.com/benbjohnson/clock v1.3.0 // indirect
- github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
+ github.com/beorn7/perks v1.0.1 // indirect
+ github.com/carlmjohnson/versioninfo v0.22.5 // indirect
+ github.com/cespare/xxhash/v2 v2.2.0 // indirect
+ github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
- github.com/go-logr/logr v1.2.4 // indirect
+ github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/go-logr/logr v1.3.0 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
- github.com/google/uuid v1.3.0 // indirect
+ github.com/google/uuid v1.4.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-retryablehttp v0.7.2 // indirect
- github.com/hashicorp/golang-lru v0.5.4 // indirect
+ github.com/hashicorp/go-retryablehttp v0.7.5 // indirect
+ github.com/hashicorp/golang-lru v1.0.2 // indirect
+ github.com/hashicorp/golang-lru/arc/v2 v2.0.6 // indirect
+ github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/ipfs/bbloom v0.0.4 // indirect
- github.com/ipfs/go-block-format v0.1.2 // indirect
+ github.com/ipfs/go-block-format v0.2.0 // indirect
github.com/ipfs/go-cid v0.4.1 // indirect
github.com/ipfs/go-datastore v0.6.0 // indirect
- github.com/ipfs/go-ipfs-blockstore v1.3.0 // indirect
- github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect
- github.com/ipfs/go-ipfs-util v0.0.2 // indirect
- github.com/ipfs/go-ipld-cbor v0.0.7-0.20230126201833-a73d038d90bc // indirect
- github.com/ipfs/go-ipld-format v0.4.0 // indirect
+ github.com/ipfs/go-ipfs-blockstore v1.3.1 // indirect
+ github.com/ipfs/go-ipfs-ds-help v1.1.1 // indirect
+ github.com/ipfs/go-ipfs-util v0.0.3 // indirect
+ github.com/ipfs/go-ipld-cbor v0.1.0 // indirect
+ github.com/ipfs/go-ipld-format v0.6.0 // indirect
github.com/ipfs/go-log/v2 v2.5.1 // indirect
github.com/ipfs/go-metrics-interface v0.0.1 // indirect
- github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
- github.com/jackc/pgx/v5 v5.3.1 // indirect
+ github.com/jackc/pgx/v5 v5.5.0 // indirect
+ github.com/jackc/puddle/v2 v2.2.1 // indirect
github.com/jbenet/goprocess v0.1.4 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
- github.com/klauspost/cpuid/v2 v2.2.4 // indirect
- github.com/labstack/gommon v0.4.0 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.6 // indirect
+ github.com/labstack/gommon v0.4.1 // indirect
github.com/lestrrat-go/blackmagic v1.0.1 // indirect
github.com/lestrrat-go/httpcc v1.0.1 // indirect
github.com/lestrrat-go/httprc v1.0.4 // indirect
github.com/lestrrat-go/iter v1.0.2 // indirect
- github.com/lestrrat-go/jwx/v2 v2.0.9 // indirect
+ github.com/lestrrat-go/jwx/v2 v2.0.12 // indirect
github.com/lestrrat-go/option v1.0.1 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.18 // indirect
- github.com/mattn/go-sqlite3 v1.14.16 // indirect
- github.com/minio/sha256-simd v1.0.0 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/mattn/go-sqlite3 v1.14.18 // indirect
+ github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
+ github.com/minio/sha256-simd v1.0.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mr-tron/base58 v1.2.0 // indirect
github.com/multiformats/go-base32 v0.1.0 // indirect
github.com/multiformats/go-base36 v0.2.0 // indirect
github.com/multiformats/go-multibase v0.2.0 // indirect
- github.com/multiformats/go-multihash v0.2.1 // indirect
+ github.com/multiformats/go-multihash v0.2.3 // indirect
github.com/multiformats/go-varint v0.0.7 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
- github.com/pkg/errors v0.9.1 // indirect
github.com/polydawn/refmt v0.89.1-0.20221221234430-40501e09de1f // indirect
+ github.com/prometheus/client_golang v1.17.0 // indirect
+ github.com/prometheus/client_model v0.5.0 // indirect
+ github.com/prometheus/common v0.45.0 // indirect
+ github.com/prometheus/procfs v0.12.0 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
+ github.com/segmentio/asm v1.2.0 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasttemplate v1.2.2 // indirect
- github.com/whyrusleeping/cbor-gen v0.0.0-20230418232409-daab9ece03a0 // indirect
- github.com/whyrusleeping/go-did v0.0.0-20230301193428-2146016fc220 // indirect
+ github.com/whyrusleeping/cbor-gen v0.0.0-20230923211252-36a87e1ba72f // indirect
+ github.com/whyrusleeping/go-did v0.0.0-20230824162731-404d1707d5d6 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
- go.opentelemetry.io/otel v1.15.1 // indirect
- go.opentelemetry.io/otel/trace v1.15.1 // indirect
+ gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect
+ gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 // indirect
+ go.opentelemetry.io/otel v1.21.0 // indirect
+ go.opentelemetry.io/otel/metric v1.21.0 // indirect
+ go.opentelemetry.io/otel/trace v1.21.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- go.uber.org/zap v1.24.0 // indirect
- golang.org/x/crypto v0.8.0 // indirect
- golang.org/x/net v0.9.0 // indirect
- golang.org/x/sys v0.7.0 // indirect
- golang.org/x/text v0.9.0 // indirect
+ go.uber.org/zap v1.26.0 // indirect
+ golang.org/x/crypto v0.15.0 // indirect
+ golang.org/x/net v0.18.0 // indirect
+ golang.org/x/sync v0.5.0 // indirect
+ golang.org/x/sys v0.14.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.3.0 // indirect
- golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
+ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
+ google.golang.org/protobuf v1.31.0 // indirect
gorm.io/driver/postgres v1.5.0 // indirect
- gorm.io/driver/sqlite v1.5.0 // indirect
- gorm.io/gorm v1.25.0 // indirect
- lukechampine.com/blake3 v1.1.7 // indirect
+ gorm.io/driver/sqlite v1.5.4 // indirect
+ gorm.io/gorm v1.25.5 // indirect
+ lukechampine.com/blake3 v1.2.1 // indirect
)
diff --git a/bskyweb/go.sum b/bskyweb/go.sum
index a07e446f4a..59797e35db 100644
--- a/bskyweb/go.sum
+++ b/bskyweb/go.sum
@@ -1,25 +1,30 @@
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
-github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
-github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
-github.com/bluesky-social/indigo v0.0.0-20230504025040-8915cccc3319 h1:VCNXRXpgyK3xkaQ8fzL5WzswerwLycke4B9ggLs1uOA=
-github.com/bluesky-social/indigo v0.0.0-20230504025040-8915cccc3319/go.mod h1:Hc09SUJXAIujaAvq7JXxi8ZQQI887grzPkHgn4JyE1Q=
+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bluesky-social/indigo v0.0.0-20231216010655-ad730a7da4f5 h1:Zk1c+mxCYH6G/vLL0+9lO2Eci4OT3AFy73qPWa9auDM=
+github.com/bluesky-social/indigo v0.0.0-20231216010655-ad730a7da4f5/go.mod h1:a8cPbqDkRX+aPwJnXF7kAi3PF26hYiR4w5H8624MB7k=
+github.com/carlmjohnson/versioninfo v0.22.5 h1:O00sjOLUAFxYQjlN/bzYTuZiS0y6fWDQjMRvwtKgwwc=
+github.com/carlmjohnson/versioninfo v0.22.5/go.mod h1:QT9mph3wcVfISUKd0i9sZfVrPviHuSF+cUtLjm2WSf8=
+github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
-github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM=
+github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
-github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc=
+github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
+github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
+github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/flosch/pongo2/v6 v6.0.0 h1:lsGru8IAzHgIAw6H2m4PCyleO58I40ow6apih0WprMU=
github.com/flosch/pongo2/v6 v6.0.0/go.mod h1:CuDpFm47R0uGGE7z13/tTlt1Y6zdxvr2RLT5LJhsHEU=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
-github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
+github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0=
@@ -29,53 +34,49 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
-github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
+github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU=
-github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI=
github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
-github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0=
-github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
-github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
-github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
+github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M=
+github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
+github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
+github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
+github.com/hashicorp/golang-lru/arc/v2 v2.0.6 h1:4NU7uP5vSoK6TbaMj3NtY478TTAWLso/vL1gpNrInHg=
+github.com/hashicorp/golang-lru/arc/v2 v2.0.6/go.mod h1:cfdDIX05DWvYV6/shsxDfa/OVcRieOt+q4FnM8x+Xno=
+github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
+github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs=
github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0=
-github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY=
-github.com/ipfs/go-block-format v0.1.2 h1:GAjkfhVx1f4YTODS6Esrj1wt2HhrtwTnhEr+DyPUaJo=
-github.com/ipfs/go-block-format v0.1.2/go.mod h1:mACVcrxarQKstUU3Yf/RdwbC4DzPV6++rO2a3d+a/KE=
-github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
-github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
-github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog=
+github.com/ipfs/go-block-format v0.2.0 h1:ZqrkxBA2ICbDRbK8KJs/u0O3dlp6gmAuuXUJNiW1Ycs=
+github.com/ipfs/go-block-format v0.2.0/go.mod h1:+jpL11nFx5A/SPpsoBn6Bzkra/zaArfSmsknbPMYgzM=
github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s=
github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk=
-github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk=
github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk=
github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8=
github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk=
github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps=
-github.com/ipfs/go-ipfs-blockstore v1.3.0 h1:m2EXaWgwTzAfsmt5UdJ7Is6l4gJcaM/A12XwJyvYvMM=
-github.com/ipfs/go-ipfs-blockstore v1.3.0/go.mod h1:KgtZyc9fq+P2xJUiCAzbRdhhqJHvsw8u2Dlqy2MyRTE=
-github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw=
-github.com/ipfs/go-ipfs-ds-help v1.1.0 h1:yLE2w9RAsl31LtfMt91tRZcrx+e61O5mDxFRR994w4Q=
-github.com/ipfs/go-ipfs-ds-help v1.1.0/go.mod h1:YR5+6EaebOhfcqVCyqemItCLthrpVNot+rsOU/5IatU=
-github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc=
-github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8=
-github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ=
-github.com/ipfs/go-ipld-cbor v0.0.7-0.20230126201833-a73d038d90bc h1:eUEo764smNy0EVRuMTSmirmuh552Mf2aBjfpDcLnDa8=
-github.com/ipfs/go-ipld-cbor v0.0.7-0.20230126201833-a73d038d90bc/go.mod h1:X7SgEIwC4COC5OWfcepZBWafO5kA1Rmt9ZsLLbhihQk=
-github.com/ipfs/go-ipld-format v0.4.0 h1:yqJSaJftjmjc9jEOFYlpkwOLVKv68OD27jFLlSghBlQ=
-github.com/ipfs/go-ipld-format v0.4.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM=
+github.com/ipfs/go-ipfs-blockstore v1.3.1 h1:cEI9ci7V0sRNivqaOr0elDsamxXFxJMMMy7PTTDQNsQ=
+github.com/ipfs/go-ipfs-blockstore v1.3.1/go.mod h1:KgtZyc9fq+P2xJUiCAzbRdhhqJHvsw8u2Dlqy2MyRTE=
+github.com/ipfs/go-ipfs-ds-help v1.1.1 h1:B5UJOH52IbcfS56+Ul+sv8jnIV10lbjLF5eOO0C66Nw=
+github.com/ipfs/go-ipfs-ds-help v1.1.1/go.mod h1:75vrVCkSdSFidJscs8n4W+77AtTpCIAdDGAwjitJMIo=
+github.com/ipfs/go-ipfs-util v0.0.3 h1:2RFdGez6bu2ZlZdI+rWfIdbQb1KudQp3VGwPtdNCmE0=
+github.com/ipfs/go-ipfs-util v0.0.3/go.mod h1:LHzG1a0Ig4G+iZ26UUOMjHd+lfM84LZCrn17xAKWBvs=
+github.com/ipfs/go-ipld-cbor v0.1.0 h1:dx0nS0kILVivGhfWuB6dUpMa/LAwElHPw1yOGYopoYs=
+github.com/ipfs/go-ipld-cbor v0.1.0/go.mod h1:U2aYlmVrJr2wsUBU67K4KgepApSZddGRDWBYR0H4sCk=
+github.com/ipfs/go-ipld-format v0.6.0 h1:VEJlA2kQ3LqFSIm5Vu6eIlSxD/Ze90xtc4Meten1F5U=
+github.com/ipfs/go-ipld-format v0.6.0/go.mod h1:g4QVMTn3marU3qXchwjpKPKgJv+zF+OlaKMyhJ4LHPg=
github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8=
github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo=
github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g=
@@ -83,16 +84,16 @@ github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY=
github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI=
github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg=
github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY=
-github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52 h1:QG4CGBqCeuBo6aZlGAamSkxWdgWfZGeE49eUOWJPA4c=
-github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52/go.mod h1:fdg+/X9Gg4AsAIzWpEHwnqd+QY3b7lajxyjE1m4hkq4=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8=
-github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU=
-github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8=
+github.com/jackc/pgx/v5 v5.5.0 h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw=
+github.com/jackc/pgx/v5 v5.5.0/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA=
github.com/jackc/puddle/v2 v2.2.0/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
+github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
+github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA=
github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o=
github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4=
@@ -106,25 +107,23 @@ github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
-github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
-github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
-github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
+github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA=
+github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
+github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc=
+github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/labstack/echo/v4 v4.10.2 h1:n1jAhnq/elIFTHr1EYpiYtyKgx4RW9ccVgkqByZaN2M=
-github.com/labstack/echo/v4 v4.10.2/go.mod h1:OEyqf2//K1DFdE57vw2DRgWY0M7s65IVQO2FzvI4J5k=
-github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8=
-github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/labstack/echo/v4 v4.11.3 h1:Upyu3olaqSHkCjs1EJJwQ3WId8b8b1hxbogyommKktM=
+github.com/labstack/echo/v4 v4.11.3/go.mod h1:UcGuQ8V6ZNRmSweBIJkPvGfwCMIlFmiqrPqiEBfPYws=
+github.com/labstack/gommon v0.4.1 h1:gqEff0p/hTENGMABzezPoPSRtIh1Cvw0ueMOe0/dfOk=
+github.com/labstack/gommon v0.4.1/go.mod h1:TyTrpPqxR5KMk8LKVtLmfMjeQ5FEkBYdxLYPw/WfrOM=
github.com/lestrrat-go/blackmagic v1.0.1 h1:lS5Zts+5HIC/8og6cGHb0uCcNCa3OUt1ygh3Qz2Fe80=
github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE=
@@ -133,26 +132,25 @@ github.com/lestrrat-go/httprc v1.0.4 h1:bAZymwoZQb+Oq8MEbyipag7iSq6YIga8Wj6GOiJG
github.com/lestrrat-go/httprc v1.0.4/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo=
github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI=
github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
-github.com/lestrrat-go/jwx/v2 v2.0.9 h1:TRX4Q630UXxPVLvP5vGaqVJO7S+0PE6msRZUsFSBoC8=
-github.com/lestrrat-go/jwx/v2 v2.0.9/go.mod h1:K68euYaR95FnL0hIQB8VvzL70vB7pSifbJUydCTPmgM=
+github.com/lestrrat-go/jwx/v2 v2.0.12 h1:3d589+5w/b9b7S3DneICPW16AqTyYXB7VRjgluSDWeA=
+github.com/lestrrat-go/jwx/v2 v2.0.12/go.mod h1:Mq4KN1mM7bp+5z/W5HS8aCNs5RKZ911G/0y2qUjAQuQ=
github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU=
github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
-github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
-github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
-github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
-github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-sqlite3 v1.14.18 h1:JL0eqdCOq6DJVNPSvArO/bIV9/P7fbGrV00LZHc+5aI=
+github.com/mattn/go-sqlite3 v1.14.18/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
+github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
+github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
-github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U=
github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
-github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
-github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
+github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
+github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8=
@@ -165,32 +163,39 @@ github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYg
github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM=
github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0=
github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4=
-github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs=
github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc=
github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g=
github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk=
-github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U=
github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
-github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108=
-github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc=
+github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U=
+github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM=
github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8=
github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
-github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/polydawn/refmt v0.89.1-0.20221221234430-40501e09de1f h1:VXTQfuJj9vKR4TCkEuWIckKvdHFeJH/huIFJ9/cXOB0=
github.com/polydawn/refmt v0.89.1-0.20221221234430-40501e09de1f/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw=
+github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=
+github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
+github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
+github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
+github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
+github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
+github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
+github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
+github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys=
+github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs=
github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
@@ -209,39 +214,46 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
-github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
-github.com/urfave/cli/v2 v2.25.3 h1:VJkt6wvEBOoSjPFQvOkv6iWIrsJyCrKGtCtxXWwmGeY=
-github.com/urfave/cli/v2 v2.25.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc=
+github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
+github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ=
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
-github.com/whyrusleeping/cbor-gen v0.0.0-20230418232409-daab9ece03a0 h1:XYEgH2nJgsrcrj32p+SAbx6T3s/6QknOXezXtz7kzbg=
-github.com/whyrusleeping/cbor-gen v0.0.0-20230418232409-daab9ece03a0/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ=
-github.com/whyrusleeping/go-did v0.0.0-20230301193428-2146016fc220 h1:EO/9z3yDvx1van1/0esdcqhalZZQGRj3I1BPTWr5k3A=
-github.com/whyrusleeping/go-did v0.0.0-20230301193428-2146016fc220/go.mod h1:qPtRyexGM5XMHFIfjH+EiA/A/1n2JakWEdMPC53pJAE=
+github.com/whyrusleeping/cbor-gen v0.0.0-20230923211252-36a87e1ba72f h1:SBuSxXJL0/ZJMtTxbXZgHZkThl9dNrzyaNhlyaqscRo=
+github.com/whyrusleeping/cbor-gen v0.0.0-20230923211252-36a87e1ba72f/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ=
+github.com/whyrusleeping/go-did v0.0.0-20230824162731-404d1707d5d6 h1:yJ9/LwIGIk/c0CdoavpC9RNSGSruIspSZtxG3Nnldic=
+github.com/whyrusleeping/go-did v0.0.0-20230824162731-404d1707d5d6/go.mod h1:39U9RRVr4CKbXpXYopWn+FSH5s+vWu6+RmguSPWAq5s=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8=
-go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc=
-go.opentelemetry.io/otel/trace v1.15.1 h1:uXLo6iHJEzDfrNC0L0mNjItIp06SyaBQxu5t3xMlngY=
-go.opentelemetry.io/otel/trace v1.15.1/go.mod h1:IWdQG/5N1x7f6YUlmdLeJvH9yxtuJAfc4VW5Agv9r/8=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 h1:pginetY7+onl4qN1vl0xW/V/v6OBZ0vVdH+esuJgvmM=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0/go.mod h1:XiYsayHc36K3EByOO6nbAXnAWbrUxdjUROCEeeROOH8=
+go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc=
+go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
+go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
+go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM=
+go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc=
+go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ=
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
-go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
-go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
+go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
+go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo=
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
@@ -249,9 +261,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
-go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
-go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
-golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
+go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -259,9 +270,9 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
-golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
-golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
+golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
+golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
+golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -278,17 +289,18 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
-golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
+golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
+golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -296,27 +308,29 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
-golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
+golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -335,11 +349,13 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
+google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
@@ -351,11 +367,11 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/postgres v1.5.0 h1:u2FXTy14l45qc3UeCJ7QaAXZmZfDDv0YrthvmRq1l0U=
gorm.io/driver/postgres v1.5.0/go.mod h1:FUZXzO+5Uqg5zzwzv4KK49R8lvGIyscBOqYrtI1Ce9A=
-gorm.io/driver/sqlite v1.5.0 h1:zKYbzRCpBrT1bNijRnxLDJWPjVfImGEn0lSnUY5gZ+c=
-gorm.io/driver/sqlite v1.5.0/go.mod h1:kDMDfntV9u/vuMmz8APHtHF0b4nyBB7sfCieC6G8k8I=
+gorm.io/driver/sqlite v1.5.4 h1:IqXwXi8M/ZlPzH/947tn5uik3aYQslP9BVveoax0nV0=
+gorm.io/driver/sqlite v1.5.4/go.mod h1:qxAuCol+2r6PannQDpOP1FP6ag3mKi4esLnB/jHed+4=
gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
-gorm.io/gorm v1.25.0 h1:+KtYtb2roDz14EQe4bla8CbQlmb9dN3VejSai3lprfU=
-gorm.io/gorm v1.25.0/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
+gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=
+gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0=
-lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA=
+lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI=
+lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
diff --git a/bskyweb/templates/home.html b/bskyweb/templates/home.html
index 7beea49d9f..e06b3a4b08 100644
--- a/bskyweb/templates/home.html
+++ b/bskyweb/templates/home.html
@@ -8,6 +8,7 @@
+
{%- endblock %}
diff --git a/bskyweb/templates/post.html b/bskyweb/templates/post.html
index 25a68c9718..55a0679fbd 100644
--- a/bskyweb/templates/post.html
+++ b/bskyweb/templates/post.html
@@ -10,8 +10,9 @@
{% block html_head_extra -%}
{%- if postView -%}
-
+
+
{%- if requestURI %}
{% endif -%}
@@ -32,17 +33,20 @@
{% endif %}
-
-
+
+
{% endif -%}
{%- endblock %}
{% block noscript_extra -%}
+{%- if postView -%}
Post
{{ postView.Author.DisplayName }}
{{ postView.Author.Handle }}
{{ postView.Author.Did }}
{{ postView.Record.Val.Text }}
+
{{ postView.IndexedAt }}
+{% endif -%}
{%- endblock %}
diff --git a/bskyweb/templates/profile.html b/bskyweb/templates/profile.html
index 4d4f679466..71c1003278 100644
--- a/bskyweb/templates/profile.html
+++ b/bskyweb/templates/profile.html
@@ -10,8 +10,9 @@
{% block html_head_extra -%}
{%- if profileView -%}
-
+
+
{%- if requestURI %}
{% endif -%}
@@ -33,11 +34,12 @@
{% endif %}
-
+
{% endif -%}
{%- endblock %}
{% block noscript_extra -%}
+{%- if profileView -%}
Profile
{{ profileView.DisplayName }}
@@ -45,4 +47,5 @@
{{ profileView.Did }}
{{ profileView.Description }}
+{% endif -%}
{%- endblock %}
diff --git a/docs/internationalization.md b/docs/localization.md
similarity index 93%
rename from docs/internationalization.md
rename to docs/localization.md
index 3c1af7a4dc..b3dce7b418 100644
--- a/docs/internationalization.md
+++ b/docs/localization.md
@@ -110,4 +110,10 @@ export function Welcome() {
return {welcome}
;
}
-```
\ No newline at end of file
+```
+
+
+### Credits
+Please check each individual `messages.po` file for the credits of the translators. We are very grateful for their help!
+
+If you would like to translate the Bluesky app into your language, please open a PR or issue on this repo.
\ No newline at end of file
diff --git a/jest/test-pds.ts b/jest/test-pds.ts
index 25faddfa7b..d86ebd787a 100644
--- a/jest/test-pds.ts
+++ b/jest/test-pds.ts
@@ -78,7 +78,7 @@ export async function createServer(
})
const pic = fs.readFileSync(
- path.join(__dirname, '..', 'assets', 'default-avatar.jpg'),
+ path.join(__dirname, '..', 'assets', 'default-avatar.png'),
)
return {
diff --git a/package.json b/package.json
index d1d12e2237..bed17e9dc2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "bsky.app",
- "version": "1.59.0",
+ "version": "1.60.0",
"private": true,
"scripts": {
"prepare": "is-ci || husky install",
diff --git a/src/Navigation.tsx b/src/Navigation.tsx
index 252699e538..c9f9272194 100644
--- a/src/Navigation.tsx
+++ b/src/Navigation.tsx
@@ -292,7 +292,11 @@ function HomeTabNavigator() {
animationDuration: 250,
contentStyle,
}}>
- HomeScreen} />
+ HomeScreen}
+ options={{requireAuth: true}}
+ />
{commonScreens(HomeTab)}
)
@@ -402,7 +406,7 @@ const FlatNavigator = () => {
HomeScreen}
- options={{title: title('Home')}}
+ options={{title: title('Home'), requireAuth: true}}
/>
{
FeedsScreen}
- options={{title: title('Feeds')}}
+ options={{title: title('Feeds'), requireAuth: true}}
/>
) {
const intro = useSharedValue(0)
const outroLogo = useSharedValue(0)
const outroApp = useSharedValue(0)
+ const outroAppOpacity = useSharedValue(0)
const [isAnimationComplete, setIsAnimationComplete] = React.useState(false)
+ const [isImageLoaded, setIsImageLoaded] = React.useState(false)
+ const isReady = props.isReady && isImageLoaded
const logoAnimations = useAnimatedStyle(() => {
return {
@@ -56,8 +63,8 @@ export function Splash(props: React.PropsWithChildren) {
{
scale: interpolate(
outroLogo.value,
- [0, 0.06, 0.08, 1],
- [1, 0.8, 0.8, 800],
+ [0, 0.08, 1],
+ [1, 0.8, 400],
'clamp',
),
},
@@ -70,29 +77,32 @@ export function Splash(props: React.PropsWithChildren) {
return {
transform: [
{
- scale: interpolate(
- outroApp.value,
- [0, 0.7, 1],
- [1.1, 1.1, 1],
- 'clamp',
- ),
+ scale: interpolate(outroApp.value, [0, 1], [1.1, 1], 'clamp'),
},
],
- opacity: interpolate(outroApp.value, [0, 0.7, 1], [0, 0, 1], 'clamp'),
+ opacity: interpolate(
+ outroAppOpacity.value,
+ [0, 0.08, 0.15, 1],
+ [0, 0, 1, 1],
+ 'clamp',
+ ),
}
})
const onFinish = useCallback(() => setIsAnimationComplete(true), [])
useEffect(() => {
- if (props.isReady) {
+ if (isReady) {
// hide on mount
SplashScreen.hideAsync().catch(() => {})
intro.value = withTiming(
1,
- {duration: 200, easing: Easing.out(Easing.cubic)},
+ {duration: 400, easing: Easing.out(Easing.cubic)},
async () => {
+ // set these values to check animation at specific point
+ // outroLogo.value = 0.1
+ // outroApp.value = 0.1
outroLogo.value = withTiming(
1,
{duration: 1200, easing: Easing.in(Easing.cubic)},
@@ -100,24 +110,31 @@ export function Splash(props: React.PropsWithChildren) {
runOnJS(onFinish)()
},
)
- outroApp.value = withTiming(
- 1,
- {duration: 1200, easing: Easing.inOut(Easing.cubic)},
- () => {
- runOnJS(onFinish)()
- },
- )
+ outroApp.value = withTiming(1, {
+ duration: 1200,
+ easing: Easing.inOut(Easing.cubic),
+ })
+ outroAppOpacity.value = withTiming(1, {
+ duration: 1200,
+ easing: Easing.in(Easing.cubic),
+ })
},
)
}
- }, [onFinish, intro, outroLogo, outroApp, props.isReady])
+ }, [onFinish, intro, outroLogo, outroApp, outroAppOpacity, isReady])
+
+ const onLoadEnd = useCallback(() => {
+ setIsImageLoaded(true)
+ }, [setIsImageLoaded])
return (
{!isAnimationComplete && (
-
)}
diff --git a/src/lib/analytics/types.ts b/src/lib/analytics/types.ts
index 3d2ebb312e..5a24c360af 100644
--- a/src/lib/analytics/types.ts
+++ b/src/lib/analytics/types.ts
@@ -13,7 +13,6 @@ interface TrackPropertiesMap {
'Sign In': {resumedSession: boolean} // CAN BE SERVER
'Create Account': {} // CAN BE SERVER
'Try Create Account': {}
- 'Create Account Successfully': {}
'Signin:PressedForgotPassword': {}
'Signin:PressedSelectService': {}
// COMPOSER / CREATE POST events
diff --git a/src/lib/api/index.ts b/src/lib/api/index.ts
index d94ee4643b..440dfa5ee3 100644
--- a/src/lib/api/index.ts
+++ b/src/lib/api/index.ts
@@ -104,12 +104,18 @@ export async function post(agent: BskyAgent, opts: PostOpts) {
// add image embed if present
if (opts.images?.length) {
+ logger.info(`Uploading images`, {
+ count: opts.images.length,
+ })
+
const images: AppBskyEmbedImages.Image[] = []
for (const image of opts.images) {
opts.onStateChange?.(`Uploading image #${images.length + 1}...`)
+ logger.info(`Compressing image`)
await image.compress()
const path = image.compressed?.path ?? image.path
const {width, height} = image.compressed || image
+ logger.info(`Uploading image`)
const res = await uploadBlob(agent, path, 'image/jpeg')
images.push({
image: res.data.blob,
diff --git a/src/locale/locales/en/messages.po b/src/locale/locales/en/messages.po
index d36445b59d..7485c163e8 100644
--- a/src/locale/locales/en/messages.po
+++ b/src/locale/locales/en/messages.po
@@ -75,6 +75,10 @@ msgstr ""
#~ msgid "<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting.0>"
#~ msgstr ""
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+msgid "A content warning has been applied to this {0}."
+msgstr ""
+
#: src/lib/hooks/useOTAUpdate.ts:16
msgid "A new version of the app is available. Please update to continue using the app."
msgstr ""
@@ -95,7 +99,7 @@ msgstr ""
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:193
-#: src/view/screens/ProfileList.tsx:753
+#: src/view/screens/ProfileList.tsx:754
msgid "Add"
msgstr ""
@@ -103,7 +107,7 @@ msgstr ""
msgid "Add a content warning"
msgstr ""
-#: src/view/screens/ProfileList.tsx:743
+#: src/view/screens/ProfileList.tsx:744
msgid "Add a user to this list"
msgstr ""
@@ -126,11 +130,11 @@ msgstr ""
msgid "Add details to report"
msgstr ""
-#: src/view/com/composer/Composer.tsx:432
+#: src/view/com/composer/Composer.tsx:438
msgid "Add link card"
msgstr ""
-#: src/view/com/composer/Composer.tsx:435
+#: src/view/com/composer/Composer.tsx:441
msgid "Add link card:"
msgstr ""
@@ -142,7 +146,7 @@ msgstr ""
msgid "Add to Lists"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:275
+#: src/view/screens/ProfileFeed.tsx:270
msgid "Add to my feeds"
msgstr ""
@@ -200,15 +204,23 @@ msgstr ""
msgid "App Passwords"
msgstr ""
-#: src/view/com/modals/AppealLabel.tsx:65
-msgid "Appeal Decision"
+#: src/view/com/util/forms/PostDropdownBtn.tsx:207
+msgid "Appeal content warning"
msgstr ""
-#: src/view/com/util/moderation/LabelInfo.tsx:51
+#: src/view/com/modals/AppealLabel.tsx:65
+msgid "Appeal Content Warning"
+msgstr ""
+
+#: src/view/com/modals/AppealLabel.tsx:65
+#~ msgid "Appeal Decision"
+#~ msgstr ""
+
+#: src/view/com/util/moderation/LabelInfo.tsx:52
msgid "Appeal this decision"
msgstr ""
-#: src/view/com/util/moderation/LabelInfo.tsx:55
+#: src/view/com/util/moderation/LabelInfo.tsx:56
msgid "Appeal this decision."
msgstr ""
@@ -224,15 +236,15 @@ msgstr ""
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr ""
-#: src/view/com/composer/Composer.tsx:141
+#: src/view/com/composer/Composer.tsx:142
msgid "Are you sure you'd like to discard this draft?"
msgstr ""
-#: src/view/screens/ProfileList.tsx:351
+#: src/view/screens/ProfileList.tsx:352
msgid "Are you sure?"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:188
+#: src/view/com/util/forms/PostDropdownBtn.tsx:190
msgid "Are you sure? This cannot be undone."
msgstr ""
@@ -244,7 +256,7 @@ msgstr ""
#~ msgid "Ask apps to limit the visibility of my account"
#~ msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:145
+#: src/view/com/auth/create/CreateAccount.tsx:141
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
#: src/view/com/auth/login/LoginForm.tsx:249
@@ -275,15 +287,15 @@ msgstr ""
msgid "Block Account"
msgstr ""
-#: src/view/screens/ProfileList.tsx:521
+#: src/view/screens/ProfileList.tsx:522
msgid "Block accounts"
msgstr ""
-#: src/view/screens/ProfileList.tsx:471
+#: src/view/screens/ProfileList.tsx:472
msgid "Block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:306
+#: src/view/screens/ProfileList.tsx:307
msgid "Block these accounts?"
msgstr ""
@@ -307,7 +319,7 @@ msgstr ""
msgid "Blocked post."
msgstr ""
-#: src/view/screens/ProfileList.tsx:308
+#: src/view/screens/ProfileList.tsx:309
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr ""
@@ -316,7 +328,6 @@ msgid "Blog"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:31
-#: src/view/com/auth/SplashScreen.tsx:26
msgid "Bluesky"
msgstr ""
@@ -362,8 +373,8 @@ msgstr ""
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
msgstr ""
-#: src/view/com/composer/Composer.tsx:279
-#: src/view/com/composer/Composer.tsx:282
+#: src/view/com/composer/Composer.tsx:285
+#: src/view/com/composer/Composer.tsx:288
#: src/view/com/modals/AltImage.tsx:127
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
@@ -542,7 +553,7 @@ msgstr ""
msgid "Confirmation code"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:178
+#: src/view/com/auth/create/CreateAccount.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:268
msgid "Connecting..."
msgstr ""
@@ -582,11 +593,11 @@ msgstr ""
msgid "Copy"
msgstr ""
-#: src/view/screens/ProfileList.tsx:383
+#: src/view/screens/ProfileList.tsx:384
msgid "Copy link to list"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:129
+#: src/view/com/util/forms/PostDropdownBtn.tsx:131
msgid "Copy link to post"
msgstr ""
@@ -594,7 +605,7 @@ msgstr ""
msgid "Copy link to profile"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:115
+#: src/view/com/util/forms/PostDropdownBtn.tsx:117
msgid "Copy post text"
msgstr ""
@@ -602,25 +613,25 @@ msgstr ""
msgid "Copyright Policy"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:98
+#: src/view/screens/ProfileFeed.tsx:94
msgid "Could not load feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:829
+#: src/view/screens/ProfileList.tsx:830
msgid "Could not load list"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:41
+#: src/view/com/auth/SplashScreen.tsx:46
msgid "Create a new account"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:124
+#: src/view/com/auth/create/CreateAccount.tsx:120
msgid "Create Account"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:38
+#: src/view/com/auth/SplashScreen.tsx:43
msgid "Create new account"
msgstr ""
@@ -654,8 +665,8 @@ msgstr ""
msgid "Delete app password"
msgstr ""
-#: src/view/screens/ProfileList.tsx:350
-#: src/view/screens/ProfileList.tsx:410
+#: src/view/screens/ProfileList.tsx:351
+#: src/view/screens/ProfileList.tsx:411
msgid "Delete List"
msgstr ""
@@ -667,11 +678,11 @@ msgstr ""
msgid "Delete my account…"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:183
+#: src/view/com/util/forms/PostDropdownBtn.tsx:185
msgid "Delete post"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:189
msgid "Delete this post?"
msgstr ""
@@ -694,11 +705,11 @@ msgstr ""
msgid "Developer Tools"
msgstr ""
-#: src/view/com/composer/Composer.tsx:142
+#: src/view/com/composer/Composer.tsx:143
msgid "Discard"
msgstr ""
-#: src/view/com/composer/Composer.tsx:136
+#: src/view/com/composer/Composer.tsx:137
msgid "Discard draft"
msgstr ""
@@ -750,7 +761,7 @@ msgstr ""
msgid "Edit image"
msgstr ""
-#: src/view/screens/ProfileList.tsx:398
+#: src/view/screens/ProfileList.tsx:399
msgid "Edit list details"
msgstr ""
@@ -858,8 +869,8 @@ msgstr ""
#: src/view/screens/Feeds.tsx:475
#: src/view/screens/Profile.tsx:164
-#: src/view/shell/bottom-bar/BottomBar.tsx:163
-#: src/view/shell/desktop/LeftNav.tsx:335
+#: src/view/shell/bottom-bar/BottomBar.tsx:181
+#: src/view/shell/desktop/LeftNav.tsx:339
#: src/view/shell/Drawer.tsx:455
#: src/view/shell/Drawer.tsx:456
msgid "Feeds"
@@ -959,17 +970,17 @@ msgstr ""
msgid "Get Started"
msgstr ""
-#: src/view/com/auth/LoggedOut.tsx:70
-#: src/view/com/auth/LoggedOut.tsx:71
+#: src/view/com/auth/LoggedOut.tsx:81
+#: src/view/com/auth/LoggedOut.tsx:82
#: src/view/com/util/moderation/ScreenHider.tsx:123
#: src/view/shell/desktop/LeftNav.tsx:103
msgid "Go back"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:107
-#: src/view/screens/ProfileFeed.tsx:112
-#: src/view/screens/ProfileList.tsx:838
-#: src/view/screens/ProfileList.tsx:843
+#: src/view/screens/ProfileFeed.tsx:103
+#: src/view/screens/ProfileFeed.tsx:108
+#: src/view/screens/ProfileList.tsx:839
+#: src/view/screens/ProfileList.tsx:844
msgid "Go Back"
msgstr ""
@@ -1029,14 +1040,14 @@ msgstr ""
#~ msgid "Hmmm, we're having trouble finding this feed. It may have been deleted."
#~ msgstr ""
-#: src/view/shell/bottom-bar/BottomBar.tsx:116
-#: src/view/shell/desktop/LeftNav.tsx:297
+#: src/view/shell/bottom-bar/BottomBar.tsx:137
+#: src/view/shell/desktop/LeftNav.tsx:303
#: src/view/shell/Drawer.tsx:379
#: src/view/shell/Drawer.tsx:380
msgid "Home"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:99
+#: src/view/com/pager/FeedsTabBarMobile.tsx:96
#: src/view/screens/PreferencesHomeFeed.tsx:95
#: src/view/screens/Settings.tsx:481
msgid "Home Feed Preferences"
@@ -1175,7 +1186,7 @@ msgstr ""
#~ msgid "Light"
#~ msgstr ""
-#: src/view/screens/ProfileFeed.tsx:627
+#: src/view/screens/ProfileFeed.tsx:577
msgid "Like this feed"
msgstr ""
@@ -1205,7 +1216,7 @@ msgid "List Name"
msgstr ""
#: src/view/screens/Profile.tsx:165
-#: src/view/shell/desktop/LeftNav.tsx:372
+#: src/view/shell/desktop/LeftNav.tsx:376
#: src/view/shell/Drawer.tsx:471
#: src/view/shell/Drawer.tsx:472
msgid "Lists"
@@ -1245,8 +1256,8 @@ msgid "Login to account that is not listed"
msgstr ""
#: src/view/screens/ProfileFeed.tsx:472
-msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
-msgstr ""
+#~ msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
+#~ msgstr ""
#: src/view/com/modals/LinkWarning.tsx:63
msgid "Make sure this is where you intend to go!"
@@ -1269,13 +1280,12 @@ msgid "Menu"
msgstr ""
#: src/view/com/posts/FeedErrorMessage.tsx:194
-#: src/view/screens/ProfileFeed.tsx:480
msgid "Message from server"
msgstr ""
#: src/view/screens/Moderation.tsx:64
#: src/view/screens/Settings.tsx:563
-#: src/view/shell/desktop/LeftNav.tsx:390
+#: src/view/shell/desktop/LeftNav.tsx:394
#: src/view/shell/Drawer.tsx:490
#: src/view/shell/Drawer.tsx:491
msgid "Moderation"
@@ -1294,8 +1304,8 @@ msgid "More feeds"
msgstr ""
#: src/view/com/profile/ProfileHeader.tsx:548
-#: src/view/screens/ProfileFeed.tsx:365
-#: src/view/screens/ProfileList.tsx:582
+#: src/view/screens/ProfileFeed.tsx:360
+#: src/view/screens/ProfileList.tsx:583
msgid "More options"
msgstr ""
@@ -1307,19 +1317,19 @@ msgstr ""
msgid "Mute Account"
msgstr ""
-#: src/view/screens/ProfileList.tsx:509
+#: src/view/screens/ProfileList.tsx:510
msgid "Mute accounts"
msgstr ""
-#: src/view/screens/ProfileList.tsx:456
+#: src/view/screens/ProfileList.tsx:457
msgid "Mute list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:269
+#: src/view/screens/ProfileList.tsx:270
msgid "Mute these accounts?"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:147
+#: src/view/com/util/forms/PostDropdownBtn.tsx:149
msgid "Mute thread"
msgstr ""
@@ -1335,7 +1345,7 @@ msgstr ""
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr ""
-#: src/view/screens/ProfileList.tsx:271
+#: src/view/screens/ProfileList.tsx:272
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr ""
@@ -1376,9 +1386,9 @@ msgstr ""
#: src/view/com/feeds/FeedPage.tsx:200
#: src/view/screens/Feeds.tsx:510
#: src/view/screens/Profile.tsx:353
-#: src/view/screens/ProfileFeed.tsx:441
-#: src/view/screens/ProfileList.tsx:192
-#: src/view/screens/ProfileList.tsx:220
+#: src/view/screens/ProfileFeed.tsx:430
+#: src/view/screens/ProfileList.tsx:193
+#: src/view/screens/ProfileList.tsx:221
#: src/view/shell/desktop/LeftNav.tsx:246
msgid "New post"
msgstr ""
@@ -1387,7 +1397,7 @@ msgstr ""
msgid "New Post"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:158
+#: src/view/com/auth/create/CreateAccount.tsx:154
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
#: src/view/com/auth/login/LoginForm.tsx:281
@@ -1407,8 +1417,8 @@ msgstr ""
msgid "No"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:620
-#: src/view/screens/ProfileList.tsx:710
+#: src/view/screens/ProfileFeed.tsx:570
+#: src/view/screens/ProfileList.tsx:711
msgid "No description"
msgstr ""
@@ -1459,8 +1469,8 @@ msgstr ""
#: src/view/screens/Notifications.tsx:109
#: src/view/screens/Notifications.tsx:133
-#: src/view/shell/bottom-bar/BottomBar.tsx:187
-#: src/view/shell/desktop/LeftNav.tsx:354
+#: src/view/shell/bottom-bar/BottomBar.tsx:205
+#: src/view/shell/desktop/LeftNav.tsx:358
#: src/view/shell/Drawer.tsx:416
#: src/view/shell/Drawer.tsx:417
msgid "Notifications"
@@ -1474,7 +1484,7 @@ msgstr ""
msgid "Okay"
msgstr ""
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:354
msgid "One or more images is missing alt text."
msgstr ""
@@ -1482,7 +1492,7 @@ msgstr ""
msgid "Only {0} can reply."
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:79
+#: src/view/com/pager/FeedsTabBarMobile.tsx:76
msgid "Open navigation"
msgstr ""
@@ -1594,12 +1604,17 @@ msgstr ""
#: src/view/com/modals/AppealLabel.tsx:72
#: src/view/com/modals/AppealLabel.tsx:75
-msgid "Please tell us why you think this decision was incorrect."
+msgid "Please tell us why you think this content warning was incorrectly applied!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:331
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+#~ msgid "Please tell us why you think this decision was incorrect."
+#~ msgstr ""
+
+#: src/view/com/composer/Composer.tsx:337
#: src/view/com/post-thread/PostThread.tsx:226
-#: src/view/screens/PostThread.tsx:78
+#: src/view/screens/PostThread.tsx:80
msgid "Post"
msgstr ""
@@ -1651,7 +1666,8 @@ msgstr ""
msgid "Processing..."
msgstr ""
-#: src/view/shell/bottom-bar/BottomBar.tsx:229
+#: src/view/shell/bottom-bar/BottomBar.tsx:247
+#: src/view/shell/desktop/LeftNav.tsx:412
#: src/view/shell/Drawer.tsx:69
#: src/view/shell/Drawer.tsx:525
#: src/view/shell/Drawer.tsx:526
@@ -1718,7 +1734,7 @@ msgstr ""
#: src/view/com/feeds/FeedSourceCard.tsx:105
#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/screens/ProfileFeed.tsx:275
+#: src/view/screens/ProfileFeed.tsx:270
msgid "Remove from my feeds"
msgstr ""
@@ -1763,16 +1779,16 @@ msgstr ""
msgid "Report Account"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:295
+#: src/view/screens/ProfileFeed.tsx:290
msgid "Report feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:424
+#: src/view/screens/ProfileList.tsx:425
msgid "Report List"
msgstr ""
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:165
+#: src/view/com/util/forms/PostDropdownBtn.tsx:167
msgid "Report post"
msgstr ""
@@ -1830,8 +1846,8 @@ msgstr ""
msgid "Resets the preferences state"
msgstr ""
+#: src/view/com/auth/create/CreateAccount.tsx:163
#: src/view/com/auth/create/CreateAccount.tsx:167
-#: src/view/com/auth/create/CreateAccount.tsx:171
#: src/view/com/auth/login/LoginForm.tsx:258
#: src/view/com/auth/login/LoginForm.tsx:261
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -1881,8 +1897,8 @@ msgstr ""
#: src/view/com/util/forms/SearchInput.tsx:64
#: src/view/screens/Search/Search.tsx:401
#: src/view/screens/Search/Search.tsx:567
-#: src/view/shell/bottom-bar/BottomBar.tsx:138
-#: src/view/shell/desktop/LeftNav.tsx:315
+#: src/view/shell/bottom-bar/BottomBar.tsx:159
+#: src/view/shell/desktop/LeftNav.tsx:321
#: src/view/shell/desktop/Search.tsx:161
#: src/view/shell/desktop/Search.tsx:170
#: src/view/shell/Drawer.tsx:343
@@ -1894,12 +1910,16 @@ msgstr ""
#~ msgid "Search for posts and users."
#~ msgstr ""
+#: src/view/com/auth/LoggedOut.tsx:104
+#: src/view/com/auth/LoggedOut.tsx:105
+msgid "Search for users"
+msgstr ""
+
#: src/view/com/modals/ChangeEmail.tsx:110
msgid "Security Step Required"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:39
-#: src/view/com/auth/SplashScreen.tsx:29
msgid "See what's next"
msgstr ""
@@ -1973,7 +1993,7 @@ msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your f
msgstr ""
#: src/view/screens/Settings.tsx:277
-#: src/view/shell/desktop/LeftNav.tsx:426
+#: src/view/shell/desktop/LeftNav.tsx:430
#: src/view/shell/Drawer.tsx:546
#: src/view/shell/Drawer.tsx:547
msgid "Settings"
@@ -1984,12 +2004,12 @@ msgid "Sexual activity or erotic nudity."
msgstr ""
#: src/view/com/profile/ProfileHeader.tsx:338
-#: src/view/com/util/forms/PostDropdownBtn.tsx:129
-#: src/view/screens/ProfileList.tsx:383
+#: src/view/com/util/forms/PostDropdownBtn.tsx:131
+#: src/view/screens/ProfileList.tsx:384
msgid "Share"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:307
+#: src/view/screens/ProfileFeed.tsx:302
msgid "Share feed"
msgstr ""
@@ -2032,15 +2052,21 @@ msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:49
+#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/shell/bottom-bar/BottomBar.tsx:285
+#: src/view/shell/bottom-bar/BottomBar.tsx:286
+#: src/view/shell/bottom-bar/BottomBar.tsx:288
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:177
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:178
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:180
#: src/view/shell/NavSignupCard.tsx:58
#: src/view/shell/NavSignupCard.tsx:59
msgid "Sign in"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
-#: src/view/com/auth/SplashScreen.tsx:52
-#: src/view/com/auth/SplashScreen.web.tsx:84
+#: src/view/com/auth/SplashScreen.tsx:57
+#: src/view/com/auth/SplashScreen.web.tsx:87
msgid "Sign In"
msgstr ""
@@ -2062,6 +2088,12 @@ msgstr ""
msgid "Sign out"
msgstr ""
+#: src/view/shell/bottom-bar/BottomBar.tsx:275
+#: src/view/shell/bottom-bar/BottomBar.tsx:276
+#: src/view/shell/bottom-bar/BottomBar.tsx:278
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:167
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:168
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:170
#: src/view/shell/NavSignupCard.tsx:49
#: src/view/shell/NavSignupCard.tsx:50
#: src/view/shell/NavSignupCard.tsx:52
@@ -2113,11 +2145,11 @@ msgstr ""
msgid "Submit"
msgstr "Submit"
-#: src/view/screens/ProfileList.tsx:573
+#: src/view/screens/ProfileList.tsx:574
msgid "Subscribe"
msgstr ""
-#: src/view/screens/ProfileList.tsx:569
+#: src/view/screens/ProfileList.tsx:570
msgid "Subscribe to this list"
msgstr ""
@@ -2192,8 +2224,8 @@ msgid "There was an unexpected issue in the application. Please let us know if t
msgstr ""
#: src/view/com/util/moderation/LabelInfo.tsx:45
-msgid "This {0} has been labeled."
-msgstr ""
+#~ msgid "This {0} has been labeled."
+#~ msgstr ""
#: src/view/com/util/moderation/ScreenHider.tsx:88
msgid "This {screenDescription} has been flagged:"
@@ -2227,7 +2259,7 @@ msgstr ""
msgid "This link is taking you to the following website:"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:124
+#: src/view/com/post-thread/PostThreadItem.tsx:123
msgid "This post has been deleted."
msgstr ""
@@ -2252,9 +2284,9 @@ msgstr ""
msgid "Transformations"
msgstr ""
+#: src/view/com/post-thread/PostThreadItem.tsx:704
#: src/view/com/post-thread/PostThreadItem.tsx:706
-#: src/view/com/post-thread/PostThreadItem.tsx:708
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:103
msgid "Translate"
msgstr ""
@@ -2262,11 +2294,11 @@ msgstr ""
msgid "Try again"
msgstr ""
-#: src/view/screens/ProfileList.tsx:471
+#: src/view/screens/ProfileList.tsx:472
msgid "Un-block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:456
+#: src/view/screens/ProfileList.tsx:457
msgid "Un-mute list"
msgstr ""
@@ -2298,11 +2330,11 @@ msgstr ""
msgid "Unmute Account"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:147
+#: src/view/com/util/forms/PostDropdownBtn.tsx:149
msgid "Unmute thread"
msgstr ""
-#: src/view/screens/ProfileList.tsx:439
+#: src/view/screens/ProfileList.tsx:440
msgid "Unpin moderation list"
msgstr ""
@@ -2351,7 +2383,7 @@ msgstr ""
msgid "Username or email address"
msgstr ""
-#: src/view/screens/ProfileList.tsx:737
+#: src/view/screens/ProfileList.tsx:738
msgid "Users"
msgstr ""
@@ -2396,7 +2428,7 @@ msgstr ""
msgid "Visit Site"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:125
+#: src/view/com/auth/create/CreateAccount.tsx:121
msgid "We're so excited to have you join us!"
msgstr ""
@@ -2424,6 +2456,10 @@ msgstr ""
msgid "What is the issue with this {collectionName}?"
msgstr ""
+#: src/view/com/auth/SplashScreen.tsx:34
+msgid "What's up?"
+msgstr ""
+
#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78
msgid "Which languages are used in this post?"
msgstr ""
@@ -2445,7 +2481,7 @@ msgstr ""
msgid "Wide"
msgstr ""
-#: src/view/com/composer/Composer.tsx:403
+#: src/view/com/composer/Composer.tsx:409
msgid "Write post"
msgstr ""
diff --git a/src/locale/locales/hi/messages.po b/src/locale/locales/hi/messages.po
index 77930e51f6..d45512147d 100644
--- a/src/locale/locales/hi/messages.po
+++ b/src/locale/locales/hi/messages.po
@@ -75,6 +75,10 @@ msgstr "<0>कुछ0><1>पसंदीदा उपयोगकर्ता
#~ msgid "<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting.0>"
#~ msgstr ""
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+msgid "A content warning has been applied to this {0}."
+msgstr ""
+
#: src/lib/hooks/useOTAUpdate.ts:16
msgid "A new version of the app is available. Please update to continue using the app."
msgstr "ऐप का एक नया संस्करण उपलब्ध है. कृपया ऐप का उपयोग जारी रखने के लिए अपडेट करें।"
@@ -95,7 +99,7 @@ msgstr "अकाउंट के विकल्प"
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:193
-#: src/view/screens/ProfileList.tsx:753
+#: src/view/screens/ProfileList.tsx:754
msgid "Add"
msgstr "ऐड करो"
@@ -103,7 +107,7 @@ msgstr "ऐड करो"
msgid "Add a content warning"
msgstr "सामग्री चेतावनी जोड़ें"
-#: src/view/screens/ProfileList.tsx:743
+#: src/view/screens/ProfileList.tsx:744
msgid "Add a user to this list"
msgstr "इस सूची में किसी को जोड़ें"
@@ -126,11 +130,11 @@ msgstr "विवरण जोड़ें"
msgid "Add details to report"
msgstr "रिपोर्ट करने के लिए विवरण जोड़ें"
-#: src/view/com/composer/Composer.tsx:432
+#: src/view/com/composer/Composer.tsx:438
msgid "Add link card"
msgstr "लिंक कार्ड जोड़ें"
-#: src/view/com/composer/Composer.tsx:435
+#: src/view/com/composer/Composer.tsx:441
msgid "Add link card:"
msgstr "लिंक कार्ड जोड़ें:"
@@ -142,7 +146,7 @@ msgstr "अपने डोमेन में निम्नलिखित DN
msgid "Add to Lists"
msgstr "सूचियों में जोड़ें"
-#: src/view/screens/ProfileFeed.tsx:275
+#: src/view/screens/ProfileFeed.tsx:270
msgid "Add to my feeds"
msgstr "इस फ़ीड को सहेजें"
@@ -200,15 +204,23 @@ msgstr "ऐप पासवर्ड"
msgid "App Passwords"
msgstr "ऐप पासवर्ड"
-#: src/view/com/modals/AppealLabel.tsx:65
-msgid "Appeal Decision"
+#: src/view/com/util/forms/PostDropdownBtn.tsx:207
+msgid "Appeal content warning"
msgstr ""
-#: src/view/com/util/moderation/LabelInfo.tsx:51
+#: src/view/com/modals/AppealLabel.tsx:65
+msgid "Appeal Content Warning"
+msgstr ""
+
+#: src/view/com/modals/AppealLabel.tsx:65
+#~ msgid "Appeal Decision"
+#~ msgstr ""
+
+#: src/view/com/util/moderation/LabelInfo.tsx:52
msgid "Appeal this decision"
msgstr ""
-#: src/view/com/util/moderation/LabelInfo.tsx:55
+#: src/view/com/util/moderation/LabelInfo.tsx:56
msgid "Appeal this decision."
msgstr ""
@@ -224,15 +236,15 @@ msgstr "दिखावट"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "क्या आप वाकई ऐप पासवर्ड \"{name}\" हटाना चाहते हैं?"
-#: src/view/com/composer/Composer.tsx:141
+#: src/view/com/composer/Composer.tsx:142
msgid "Are you sure you'd like to discard this draft?"
msgstr "क्या आप वाकई इस ड्राफ्ट को हटाना करना चाहेंगे?"
-#: src/view/screens/ProfileList.tsx:351
+#: src/view/screens/ProfileList.tsx:352
msgid "Are you sure?"
msgstr "क्या आप वास्तव में इसे करना चाहते हैं?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:188
+#: src/view/com/util/forms/PostDropdownBtn.tsx:190
msgid "Are you sure? This cannot be undone."
msgstr "क्या आप वास्तव में इसे करना चाहते हैं? इसे असंपादित नहीं किया जा सकता है।"
@@ -244,7 +256,7 @@ msgstr "कलात्मक या गैर-कामुक नग्नत
#~ msgid "Ask apps to limit the visibility of my account"
#~ msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:145
+#: src/view/com/auth/create/CreateAccount.tsx:141
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
#: src/view/com/auth/login/LoginForm.tsx:249
@@ -275,15 +287,15 @@ msgstr "जन्मदिन:"
msgid "Block Account"
msgstr "खाता ब्लॉक करें"
-#: src/view/screens/ProfileList.tsx:521
+#: src/view/screens/ProfileList.tsx:522
msgid "Block accounts"
msgstr "खाता ब्लॉक करें"
-#: src/view/screens/ProfileList.tsx:471
+#: src/view/screens/ProfileList.tsx:472
msgid "Block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:306
+#: src/view/screens/ProfileList.tsx:307
msgid "Block these accounts?"
msgstr "खाता ब्लॉक करें?"
@@ -307,7 +319,7 @@ msgstr "अवरुद्ध खाते आपके थ्रेड्स
msgid "Blocked post."
msgstr "ब्लॉक पोस्ट।"
-#: src/view/screens/ProfileList.tsx:308
+#: src/view/screens/ProfileList.tsx:309
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "अवरोधन सार्वजनिक है. अवरुद्ध खाते आपके थ्रेड्स में उत्तर नहीं दे सकते, आपका उल्लेख नहीं कर सकते, या अन्यथा आपके साथ बातचीत नहीं कर सकते।"
@@ -316,7 +328,6 @@ msgid "Blog"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:31
-#: src/view/com/auth/SplashScreen.tsx:26
msgid "Bluesky"
msgstr "Bluesky"
@@ -362,8 +373,8 @@ msgstr "कैमरा"
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
msgstr "केवल अक्षर, संख्या, रिक्त स्थान, डैश और अंडरस्कोर हो सकते हैं। कम से कम 4 अक्षर लंबा होना चाहिए, लेकिन 32 अक्षरों से अधिक लंबा नहीं होना चाहिए।।"
-#: src/view/com/composer/Composer.tsx:279
-#: src/view/com/composer/Composer.tsx:282
+#: src/view/com/composer/Composer.tsx:285
+#: src/view/com/composer/Composer.tsx:288
#: src/view/com/modals/AltImage.tsx:127
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
@@ -538,7 +549,7 @@ msgstr "खाते को हटा दें"
msgid "Confirmation code"
msgstr "OTP कोड"
-#: src/view/com/auth/create/CreateAccount.tsx:178
+#: src/view/com/auth/create/CreateAccount.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:268
msgid "Connecting..."
msgstr "कनेक्टिंग ..।"
@@ -578,11 +589,11 @@ msgstr "कॉपी कर ली"
msgid "Copy"
msgstr "कॉपी"
-#: src/view/screens/ProfileList.tsx:383
+#: src/view/screens/ProfileList.tsx:384
msgid "Copy link to list"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:129
+#: src/view/com/util/forms/PostDropdownBtn.tsx:131
msgid "Copy link to post"
msgstr ""
@@ -590,7 +601,7 @@ msgstr ""
msgid "Copy link to profile"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:115
+#: src/view/com/util/forms/PostDropdownBtn.tsx:117
msgid "Copy post text"
msgstr "पोस्ट टेक्स्ट कॉपी करें"
@@ -598,25 +609,25 @@ msgstr "पोस्ट टेक्स्ट कॉपी करें"
msgid "Copyright Policy"
msgstr "कॉपीराइट नीति"
-#: src/view/screens/ProfileFeed.tsx:98
+#: src/view/screens/ProfileFeed.tsx:94
msgid "Could not load feed"
msgstr "फ़ीड लोड नहीं कर सकता"
-#: src/view/screens/ProfileList.tsx:829
+#: src/view/screens/ProfileList.tsx:830
msgid "Could not load list"
msgstr "सूची लोड नहीं कर सकता"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:41
+#: src/view/com/auth/SplashScreen.tsx:46
msgid "Create a new account"
msgstr "नया खाता बनाएं"
-#: src/view/com/auth/create/CreateAccount.tsx:124
+#: src/view/com/auth/create/CreateAccount.tsx:120
msgid "Create Account"
msgstr "खाता बनाएँ"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:38
+#: src/view/com/auth/SplashScreen.tsx:43
msgid "Create new account"
msgstr "नया खाता बनाएं"
@@ -650,8 +661,8 @@ msgstr "खाता हटाएं"
msgid "Delete app password"
msgstr "अप्प पासवर्ड हटाएं"
-#: src/view/screens/ProfileList.tsx:350
-#: src/view/screens/ProfileList.tsx:410
+#: src/view/screens/ProfileList.tsx:351
+#: src/view/screens/ProfileList.tsx:411
msgid "Delete List"
msgstr "सूची हटाएँ"
@@ -663,11 +674,11 @@ msgstr "मेरा खाता हटाएं"
msgid "Delete my account…"
msgstr "मेरा खाता हटाएं…"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:183
+#: src/view/com/util/forms/PostDropdownBtn.tsx:185
msgid "Delete post"
msgstr "पोस्ट को हटाएं"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:189
msgid "Delete this post?"
msgstr "इस पोस्ट को डीलीट करें?"
@@ -690,11 +701,11 @@ msgstr "देव सर्वर"
msgid "Developer Tools"
msgstr "डेवलपर उपकरण"
-#: src/view/com/composer/Composer.tsx:142
+#: src/view/com/composer/Composer.tsx:143
msgid "Discard"
msgstr ""
-#: src/view/com/composer/Composer.tsx:136
+#: src/view/com/composer/Composer.tsx:137
msgid "Discard draft"
msgstr "ड्राफ्ट हटाएं"
@@ -746,7 +757,7 @@ msgstr "प्रत्येक कोड एक बार काम करत
msgid "Edit image"
msgstr "छवि संपादित करें"
-#: src/view/screens/ProfileList.tsx:398
+#: src/view/screens/ProfileList.tsx:399
msgid "Edit list details"
msgstr "सूची विवरण संपादित करें"
@@ -854,8 +865,8 @@ msgstr "प्रतिक्रिया"
#: src/view/screens/Feeds.tsx:475
#: src/view/screens/Profile.tsx:164
-#: src/view/shell/bottom-bar/BottomBar.tsx:163
-#: src/view/shell/desktop/LeftNav.tsx:335
+#: src/view/shell/bottom-bar/BottomBar.tsx:181
+#: src/view/shell/desktop/LeftNav.tsx:339
#: src/view/shell/Drawer.tsx:455
#: src/view/shell/Drawer.tsx:456
msgid "Feeds"
@@ -951,17 +962,17 @@ msgstr "गैलरी"
msgid "Get Started"
msgstr "प्रारंभ करें"
-#: src/view/com/auth/LoggedOut.tsx:70
-#: src/view/com/auth/LoggedOut.tsx:71
+#: src/view/com/auth/LoggedOut.tsx:81
+#: src/view/com/auth/LoggedOut.tsx:82
#: src/view/com/util/moderation/ScreenHider.tsx:123
#: src/view/shell/desktop/LeftNav.tsx:103
msgid "Go back"
msgstr "वापस जाओ"
-#: src/view/screens/ProfileFeed.tsx:107
-#: src/view/screens/ProfileFeed.tsx:112
-#: src/view/screens/ProfileList.tsx:838
-#: src/view/screens/ProfileList.tsx:843
+#: src/view/screens/ProfileFeed.tsx:103
+#: src/view/screens/ProfileFeed.tsx:108
+#: src/view/screens/ProfileList.tsx:839
+#: src/view/screens/ProfileList.tsx:844
msgid "Go Back"
msgstr "वापस जाओ"
@@ -1021,14 +1032,14 @@ msgstr ""
#~ msgid "Hmmm, we're having trouble finding this feed. It may have been deleted."
#~ msgstr ""
-#: src/view/shell/bottom-bar/BottomBar.tsx:116
-#: src/view/shell/desktop/LeftNav.tsx:297
+#: src/view/shell/bottom-bar/BottomBar.tsx:137
+#: src/view/shell/desktop/LeftNav.tsx:303
#: src/view/shell/Drawer.tsx:379
#: src/view/shell/Drawer.tsx:380
msgid "Home"
msgstr "होम फीड"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:99
+#: src/view/com/pager/FeedsTabBarMobile.tsx:96
#: src/view/screens/PreferencesHomeFeed.tsx:95
#: src/view/screens/Settings.tsx:481
msgid "Home Feed Preferences"
@@ -1167,7 +1178,7 @@ msgstr "चित्र पुस्तकालय"
#~ msgid "Light"
#~ msgstr "लाइट मोड"
-#: src/view/screens/ProfileFeed.tsx:627
+#: src/view/screens/ProfileFeed.tsx:577
msgid "Like this feed"
msgstr "इस फ़ीड को लाइक करो"
@@ -1197,7 +1208,7 @@ msgid "List Name"
msgstr "सूची का नाम"
#: src/view/screens/Profile.tsx:165
-#: src/view/shell/desktop/LeftNav.tsx:372
+#: src/view/shell/desktop/LeftNav.tsx:376
#: src/view/shell/Drawer.tsx:471
#: src/view/shell/Drawer.tsx:472
msgid "Lists"
@@ -1237,8 +1248,8 @@ msgid "Login to account that is not listed"
msgstr "उस खाते में लॉग इन करें जो सूचीबद्ध नहीं है"
#: src/view/screens/ProfileFeed.tsx:472
-msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
-msgstr ""
+#~ msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
+#~ msgstr ""
#: src/view/com/modals/LinkWarning.tsx:63
msgid "Make sure this is where you intend to go!"
@@ -1261,13 +1272,12 @@ msgid "Menu"
msgstr "मेनू"
#: src/view/com/posts/FeedErrorMessage.tsx:194
-#: src/view/screens/ProfileFeed.tsx:480
msgid "Message from server"
msgstr ""
#: src/view/screens/Moderation.tsx:64
#: src/view/screens/Settings.tsx:563
-#: src/view/shell/desktop/LeftNav.tsx:390
+#: src/view/shell/desktop/LeftNav.tsx:394
#: src/view/shell/Drawer.tsx:490
#: src/view/shell/Drawer.tsx:491
msgid "Moderation"
@@ -1286,8 +1296,8 @@ msgid "More feeds"
msgstr "अधिक फ़ीड"
#: src/view/com/profile/ProfileHeader.tsx:548
-#: src/view/screens/ProfileFeed.tsx:365
-#: src/view/screens/ProfileList.tsx:582
+#: src/view/screens/ProfileFeed.tsx:360
+#: src/view/screens/ProfileList.tsx:583
msgid "More options"
msgstr "अधिक विकल्प"
@@ -1299,19 +1309,19 @@ msgstr "अधिक विकल्प"
msgid "Mute Account"
msgstr "खाता म्यूट करें"
-#: src/view/screens/ProfileList.tsx:509
+#: src/view/screens/ProfileList.tsx:510
msgid "Mute accounts"
msgstr "खातों को म्यूट करें"
-#: src/view/screens/ProfileList.tsx:456
+#: src/view/screens/ProfileList.tsx:457
msgid "Mute list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:269
+#: src/view/screens/ProfileList.tsx:270
msgid "Mute these accounts?"
msgstr "इन खातों को म्यूट करें?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:147
+#: src/view/com/util/forms/PostDropdownBtn.tsx:149
msgid "Mute thread"
msgstr "थ्रेड म्यूट करें"
@@ -1327,7 +1337,7 @@ msgstr "म्यूट किए गए खाते"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "म्यूट किए गए खातों की पोस्ट आपके फ़ीड और आपकी सूचनाओं से हटा दी जाती हैं। म्यूट पूरी तरह से निजी हैं."
-#: src/view/screens/ProfileList.tsx:271
+#: src/view/screens/ProfileList.tsx:272
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "म्यूट करना निजी है. म्यूट किए गए खाते आपके साथ इंटरैक्ट कर सकते हैं, लेकिन आप उनकी पोस्ट नहीं देखेंगे या उनसे सूचनाएं प्राप्त नहीं करेंगे।"
@@ -1368,9 +1378,9 @@ msgstr "नया"
#: src/view/com/feeds/FeedPage.tsx:200
#: src/view/screens/Feeds.tsx:510
#: src/view/screens/Profile.tsx:353
-#: src/view/screens/ProfileFeed.tsx:441
-#: src/view/screens/ProfileList.tsx:192
-#: src/view/screens/ProfileList.tsx:220
+#: src/view/screens/ProfileFeed.tsx:430
+#: src/view/screens/ProfileList.tsx:193
+#: src/view/screens/ProfileList.tsx:221
#: src/view/shell/desktop/LeftNav.tsx:246
msgid "New post"
msgstr "नई पोस्ट"
@@ -1379,7 +1389,7 @@ msgstr "नई पोस्ट"
msgid "New Post"
msgstr "नई पोस्ट"
-#: src/view/com/auth/create/CreateAccount.tsx:158
+#: src/view/com/auth/create/CreateAccount.tsx:154
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
#: src/view/com/auth/login/LoginForm.tsx:281
@@ -1399,8 +1409,8 @@ msgstr "अगली फोटो"
msgid "No"
msgstr "नहीं"
-#: src/view/screens/ProfileFeed.tsx:620
-#: src/view/screens/ProfileList.tsx:710
+#: src/view/screens/ProfileFeed.tsx:570
+#: src/view/screens/ProfileList.tsx:711
msgid "No description"
msgstr "कोई विवरण नहीं"
@@ -1451,8 +1461,8 @@ msgstr ""
#: src/view/screens/Notifications.tsx:109
#: src/view/screens/Notifications.tsx:133
-#: src/view/shell/bottom-bar/BottomBar.tsx:187
-#: src/view/shell/desktop/LeftNav.tsx:354
+#: src/view/shell/bottom-bar/BottomBar.tsx:205
+#: src/view/shell/desktop/LeftNav.tsx:358
#: src/view/shell/Drawer.tsx:416
#: src/view/shell/Drawer.tsx:417
msgid "Notifications"
@@ -1466,7 +1476,7 @@ msgstr "अरे नहीं!"
msgid "Okay"
msgstr "ठीक है"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:354
msgid "One or more images is missing alt text."
msgstr "एक या अधिक छवियाँ alt पाठ याद आती हैं।।"
@@ -1474,7 +1484,7 @@ msgstr "एक या अधिक छवियाँ alt पाठ याद
msgid "Only {0} can reply."
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:79
+#: src/view/com/pager/FeedsTabBarMobile.tsx:76
msgid "Open navigation"
msgstr "ओपन नेविगेशन"
@@ -1586,12 +1596,17 @@ msgstr "कृपया अपना पासवर्ड भी दर्ज
#: src/view/com/modals/AppealLabel.tsx:72
#: src/view/com/modals/AppealLabel.tsx:75
-msgid "Please tell us why you think this decision was incorrect."
+msgid "Please tell us why you think this content warning was incorrectly applied!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:331
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+#~ msgid "Please tell us why you think this decision was incorrect."
+#~ msgstr ""
+
+#: src/view/com/composer/Composer.tsx:337
#: src/view/com/post-thread/PostThread.tsx:226
-#: src/view/screens/PostThread.tsx:78
+#: src/view/screens/PostThread.tsx:80
msgid "Post"
msgstr "पोस्ट"
@@ -1643,7 +1658,8 @@ msgstr "गोपनीयता नीति"
msgid "Processing..."
msgstr "प्रसंस्करण..."
-#: src/view/shell/bottom-bar/BottomBar.tsx:229
+#: src/view/shell/bottom-bar/BottomBar.tsx:247
+#: src/view/shell/desktop/LeftNav.tsx:412
#: src/view/shell/Drawer.tsx:69
#: src/view/shell/Drawer.tsx:525
#: src/view/shell/Drawer.tsx:526
@@ -1710,7 +1726,7 @@ msgstr "फ़ीड हटाएँ"
#: src/view/com/feeds/FeedSourceCard.tsx:105
#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/screens/ProfileFeed.tsx:275
+#: src/view/screens/ProfileFeed.tsx:270
msgid "Remove from my feeds"
msgstr "मेरे फ़ीड से हटाएँ"
@@ -1755,16 +1771,16 @@ msgstr "रिपोर्ट {collectionName}"
msgid "Report Account"
msgstr "रिपोर्ट"
-#: src/view/screens/ProfileFeed.tsx:295
+#: src/view/screens/ProfileFeed.tsx:290
msgid "Report feed"
msgstr "रिपोर्ट फ़ीड"
-#: src/view/screens/ProfileList.tsx:424
+#: src/view/screens/ProfileList.tsx:425
msgid "Report List"
msgstr "रिपोर्ट सूची"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:165
+#: src/view/com/util/forms/PostDropdownBtn.tsx:167
msgid "Report post"
msgstr "रिपोर्ट पोस्ट"
@@ -1822,8 +1838,8 @@ msgstr "ऑनबोर्डिंग स्टेट को रीसेट
msgid "Resets the preferences state"
msgstr "प्राथमिकताओं की स्थिति को रीसेट करें"
+#: src/view/com/auth/create/CreateAccount.tsx:163
#: src/view/com/auth/create/CreateAccount.tsx:167
-#: src/view/com/auth/create/CreateAccount.tsx:171
#: src/view/com/auth/login/LoginForm.tsx:258
#: src/view/com/auth/login/LoginForm.tsx:261
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -1873,8 +1889,8 @@ msgstr "सहेजे गए फ़ीड"
#: src/view/com/util/forms/SearchInput.tsx:64
#: src/view/screens/Search/Search.tsx:401
#: src/view/screens/Search/Search.tsx:567
-#: src/view/shell/bottom-bar/BottomBar.tsx:138
-#: src/view/shell/desktop/LeftNav.tsx:315
+#: src/view/shell/bottom-bar/BottomBar.tsx:159
+#: src/view/shell/desktop/LeftNav.tsx:321
#: src/view/shell/desktop/Search.tsx:161
#: src/view/shell/desktop/Search.tsx:170
#: src/view/shell/Drawer.tsx:343
@@ -1886,12 +1902,16 @@ msgstr "खोज"
#~ msgid "Search for posts and users."
#~ msgstr ""
+#: src/view/com/auth/LoggedOut.tsx:104
+#: src/view/com/auth/LoggedOut.tsx:105
+msgid "Search for users"
+msgstr ""
+
#: src/view/com/modals/ChangeEmail.tsx:110
msgid "Security Step Required"
msgstr "सुरक्षा चरण आवश्यक"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:39
-#: src/view/com/auth/SplashScreen.tsx:29
msgid "See what's next"
msgstr "आगे क्या है"
@@ -1965,7 +1985,7 @@ msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your f
msgstr "इस सेटिंग को अपने निम्नलिखित फ़ीड में अपने सहेजे गए फ़ीड के नमूने दिखाने के लिए \"हाँ\" पर सेट करें। यह एक प्रयोगात्मक विशेषता है।।"
#: src/view/screens/Settings.tsx:277
-#: src/view/shell/desktop/LeftNav.tsx:426
+#: src/view/shell/desktop/LeftNav.tsx:430
#: src/view/shell/Drawer.tsx:546
#: src/view/shell/Drawer.tsx:547
msgid "Settings"
@@ -1976,12 +1996,12 @@ msgid "Sexual activity or erotic nudity."
msgstr "यौन गतिविधि या कामुक नग्नता।।"
#: src/view/com/profile/ProfileHeader.tsx:338
-#: src/view/com/util/forms/PostDropdownBtn.tsx:129
-#: src/view/screens/ProfileList.tsx:383
+#: src/view/com/util/forms/PostDropdownBtn.tsx:131
+#: src/view/screens/ProfileList.tsx:384
msgid "Share"
msgstr "शेयर"
-#: src/view/screens/ProfileFeed.tsx:307
+#: src/view/screens/ProfileFeed.tsx:302
msgid "Share feed"
msgstr ""
@@ -2024,15 +2044,21 @@ msgstr "लोग दिखाएँ"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:49
+#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/shell/bottom-bar/BottomBar.tsx:285
+#: src/view/shell/bottom-bar/BottomBar.tsx:286
+#: src/view/shell/bottom-bar/BottomBar.tsx:288
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:177
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:178
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:180
#: src/view/shell/NavSignupCard.tsx:58
#: src/view/shell/NavSignupCard.tsx:59
msgid "Sign in"
msgstr "साइन इन करें"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
-#: src/view/com/auth/SplashScreen.tsx:52
-#: src/view/com/auth/SplashScreen.web.tsx:84
+#: src/view/com/auth/SplashScreen.tsx:57
+#: src/view/com/auth/SplashScreen.web.tsx:87
msgid "Sign In"
msgstr "साइन इन करें"
@@ -2054,6 +2080,12 @@ msgstr "साइन इन करें"
msgid "Sign out"
msgstr "साइन आउट"
+#: src/view/shell/bottom-bar/BottomBar.tsx:275
+#: src/view/shell/bottom-bar/BottomBar.tsx:276
+#: src/view/shell/bottom-bar/BottomBar.tsx:278
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:167
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:168
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:170
#: src/view/shell/NavSignupCard.tsx:49
#: src/view/shell/NavSignupCard.tsx:50
#: src/view/shell/NavSignupCard.tsx:52
@@ -2105,11 +2137,11 @@ msgstr "Storybook"
msgid "Submit"
msgstr ""
-#: src/view/screens/ProfileList.tsx:573
+#: src/view/screens/ProfileList.tsx:574
msgid "Subscribe"
msgstr "सब्सक्राइब"
-#: src/view/screens/ProfileList.tsx:569
+#: src/view/screens/ProfileList.tsx:570
msgid "Subscribe to this list"
msgstr "इस सूची को सब्सक्राइब करें"
@@ -2184,8 +2216,8 @@ msgid "There was an unexpected issue in the application. Please let us know if t
msgstr "एप्लिकेशन में एक अप्रत्याशित समस्या थी. कृपया हमें बताएं कि क्या आपके साथ ऐसा हुआ है!"
#: src/view/com/util/moderation/LabelInfo.tsx:45
-msgid "This {0} has been labeled."
-msgstr ""
+#~ msgid "This {0} has been labeled."
+#~ msgstr ""
#: src/view/com/util/moderation/ScreenHider.tsx:88
msgid "This {screenDescription} has been flagged:"
@@ -2219,7 +2251,7 @@ msgstr "यह वह सेवा है जो आपको ऑनलाइन
msgid "This link is taking you to the following website:"
msgstr "यह लिंक आपको निम्नलिखित वेबसाइट पर ले जा रहा है:"
-#: src/view/com/post-thread/PostThreadItem.tsx:124
+#: src/view/com/post-thread/PostThreadItem.tsx:123
msgid "This post has been deleted."
msgstr "इस पोस्ट को हटा दिया गया है।।"
@@ -2244,9 +2276,9 @@ msgstr "ड्रॉपडाउन टॉगल करें"
msgid "Transformations"
msgstr "परिवर्तन"
+#: src/view/com/post-thread/PostThreadItem.tsx:704
#: src/view/com/post-thread/PostThreadItem.tsx:706
-#: src/view/com/post-thread/PostThreadItem.tsx:708
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:103
msgid "Translate"
msgstr "अनुवाद"
@@ -2254,11 +2286,11 @@ msgstr "अनुवाद"
msgid "Try again"
msgstr "फिर से कोशिश करो"
-#: src/view/screens/ProfileList.tsx:471
+#: src/view/screens/ProfileList.tsx:472
msgid "Un-block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:456
+#: src/view/screens/ProfileList.tsx:457
msgid "Un-mute list"
msgstr ""
@@ -2290,11 +2322,11 @@ msgstr ""
msgid "Unmute Account"
msgstr "अनम्यूट खाता"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:147
+#: src/view/com/util/forms/PostDropdownBtn.tsx:149
msgid "Unmute thread"
msgstr "थ्रेड को अनम्यूट करें"
-#: src/view/screens/ProfileList.tsx:439
+#: src/view/screens/ProfileList.tsx:440
msgid "Unpin moderation list"
msgstr ""
@@ -2343,7 +2375,7 @@ msgstr "लोग सूचियाँ"
msgid "Username or email address"
msgstr "यूजर नाम या ईमेल पता"
-#: src/view/screens/ProfileList.tsx:737
+#: src/view/screens/ProfileList.tsx:738
msgid "Users"
msgstr "यूजर लोग"
@@ -2388,7 +2420,7 @@ msgstr "अवतार देखें"
msgid "Visit Site"
msgstr "साइट पर जाएं"
-#: src/view/com/auth/create/CreateAccount.tsx:125
+#: src/view/com/auth/create/CreateAccount.tsx:121
msgid "We're so excited to have you join us!"
msgstr "हम आपके हमारी सेवा में शामिल होने को लेकर बहुत उत्साहित हैं!"
@@ -2416,6 +2448,10 @@ msgstr "<0>Bluesky0> में आपका स्वागत है"
msgid "What is the issue with this {collectionName}?"
msgstr "इस {collectionName} के साथ क्या मुद्दा है?"
+#: src/view/com/auth/SplashScreen.tsx:34
+msgid "What's up?"
+msgstr ""
+
#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78
msgid "Which languages are used in this post?"
msgstr "इस पोस्ट में किस भाषा का उपयोग किया जाता है?"
@@ -2437,7 +2473,7 @@ msgstr ""
msgid "Wide"
msgstr "चौड़ा"
-#: src/view/com/composer/Composer.tsx:403
+#: src/view/com/composer/Composer.tsx:409
msgid "Write post"
msgstr "पोस्ट लिखो"
diff --git a/src/locale/locales/ja/messages.po b/src/locale/locales/ja/messages.po
index 449ad6b9ba..17d40dbe23 100644
--- a/src/locale/locales/ja/messages.po
+++ b/src/locale/locales/ja/messages.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"POT-Creation-Date: 2023-11-22 17:10-0800\n"
-"MIME-Version: 1.0\n"
+"POT-Creation-Date: 2023-12-18 14:40+0900\n"
+"MIME-Version: 2.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
@@ -9,13 +9,13 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: \n"
-"Last-Translator: \n"
-"Language-Team: \n"
+"Last-Translator: Hima-Zinn\n"
+"Language-Team: Hima-Zinn, tkusano, dolciss, oboenikui, noritada\n"
"Plural-Forms: \n"
#: src/view/shell/desktop/RightNav.tsx:160
msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
-msgstr ""
+msgstr "{0, plural, other {# 個の招待コードが利用可能}}"
#: src/view/com/modals/Repost.tsx:44
msgid "{0}"
@@ -27,17 +27,17 @@ msgstr "{0} {purposeLabel} リスト"
#: src/view/shell/desktop/RightNav.tsx:143
msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
-msgstr ""
+msgstr "{invitesAvailable, plural, other {招待コード: # 個利用可能}}"
#: src/view/screens/Settings.tsx:407
#: src/view/shell/Drawer.tsx:640
msgid "{invitesAvailable} invite code available"
-msgstr ""
+msgstr "{invitesAvailable}個の招待コードが利用可能"
#: src/view/screens/Settings.tsx:409
#: src/view/shell/Drawer.tsx:642
msgid "{invitesAvailable} invite codes available"
-msgstr ""
+msgstr "{invitesAvailable}個の招待コードが利用可能"
#: src/view/screens/Search/Search.tsx:88
msgid "{message}"
@@ -45,19 +45,23 @@ msgstr "{message}"
#: src/view/com/threadgate/WhoCanReply.tsx:158
msgid "<0/> members"
-msgstr ""
+msgstr "<0/>のメンバー"
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:30
msgid "<0>Choose your0><1>Recommended1><2>Feeds2>"
-msgstr "<1>推奨1><2>フィード2><0>を選択0>"
+msgstr "<1>おすすめの1><2>フィード2><0>を選択0>"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:37
msgid "<0>Follow some0><1>Recommended1><2>Users2>"
-msgstr "<1>推奨1><2>ユーザー2><0>をフォロー0>"
+msgstr "<1>おすすめの1><2>ユーザー2><0>をフォロー0>"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+msgid "A content warning has been applied to this {0}."
+msgstr ""
#: src/lib/hooks/useOTAUpdate.ts:16
msgid "A new version of the app is available. Please update to continue using the app."
-msgstr "新しいバージョンのアプリが利用可能です。アプリを継続して使用するにはアップデートしてください。"
+msgstr "新しいバージョンのアプリが利用可能です。継続して使用するためにはアップデートしてください。"
#: src/view/com/modals/EditImage.tsx:299
#: src/view/screens/Settings.tsx:417
@@ -75,15 +79,15 @@ msgstr "アカウントオプション"
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:193
-#: src/view/screens/ProfileList.tsx:753
+#: src/view/screens/ProfileList.tsx:754
msgid "Add"
msgstr "追加"
#: src/view/com/modals/SelfLabel.tsx:56
msgid "Add a content warning"
-msgstr "コンテンツ警告を追加"
+msgstr "コンテンツの警告を追加"
-#: src/view/screens/ProfileList.tsx:743
+#: src/view/screens/ProfileList.tsx:744
msgid "Add a user to this list"
msgstr "リストにユーザーを追加"
@@ -106,13 +110,13 @@ msgstr "詳細を追加"
msgid "Add details to report"
msgstr "レポートに詳細を追加"
-#: src/view/com/composer/Composer.tsx:432
+#: src/view/com/composer/Composer.tsx:438
msgid "Add link card"
msgstr "リンクカードを追加"
-#: src/view/com/composer/Composer.tsx:435
+#: src/view/com/composer/Composer.tsx:441
msgid "Add link card:"
-msgstr "リンクカードの追加:"
+msgstr "リンクカードを追加:"
#: src/view/com/modals/ChangeHandle.tsx:415
msgid "Add the following DNS record to your domain:"
@@ -122,7 +126,7 @@ msgstr "次のDNSレコードをドメインに追加してください:"
msgid "Add to Lists"
msgstr "リストに追加"
-#: src/view/screens/ProfileFeed.tsx:275
+#: src/view/screens/ProfileFeed.tsx:270
msgid "Add to my feeds"
msgstr "マイフィードに追加"
@@ -141,7 +145,7 @@ msgstr "成人向けコンテンツ"
#: src/view/screens/Settings.tsx:569
msgid "Advanced"
-msgstr "アドバンス"
+msgstr "高度な設定"
#: src/view/com/composer/photos/Gallery.tsx:130
msgid "ALT"
@@ -153,15 +157,15 @@ msgstr "ALTテキスト"
#: src/view/com/composer/photos/Gallery.tsx:209
msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone."
-msgstr "ALTテキストは、視覚障害者や低視力者のために画像を説明し、すべての人に文脈を与えるのに役立ちます。"
+msgstr "ALTテキストは、すべての人が文脈を理解できるようにするために、視覚障害者や低視力者向けに提供する画像の説明文です。"
#: src/view/com/modals/VerifyEmail.tsx:118
msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below."
-msgstr "Eメールが{0}に送信されました。以下に入力できる確認コードが含まれています。"
+msgstr "メールが{0}に送信されました。以下に入力できる確認コードがそのメールに記載されています。"
#: src/view/com/modals/ChangeEmail.tsx:119
msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
-msgstr "以前のアドレス{0}にEメールが送信されました。以下に入力できる確認コードが含まれています。"
+msgstr "以前のメールアドレス{0}にメールが送信されました。以下に入力できる確認コードがそのメールに記載されています。"
#: src/view/com/notifications/FeedItem.tsx:236
#: src/view/com/threadgate/WhoCanReply.tsx:178
@@ -170,7 +174,7 @@ msgstr "および"
#: src/view/screens/LanguageSettings.tsx:95
msgid "App Language"
-msgstr "アプリケーション言語"
+msgstr "アプリの言語"
#: src/view/screens/Settings.tsx:589
msgid "App passwords"
@@ -180,17 +184,25 @@ msgstr "アプリパスワード"
msgid "App Passwords"
msgstr "アプリパスワード"
+#: src/view/com/util/forms/PostDropdownBtn.tsx:207
+msgid "Appeal content warning"
+msgstr ""
+
#: src/view/com/modals/AppealLabel.tsx:65
-msgid "Appeal Decision"
+msgid "Appeal Content Warning"
msgstr ""
-#: src/view/com/util/moderation/LabelInfo.tsx:51
+#: src/view/com/modals/AppealLabel.tsx:65
+#~ msgid "Appeal Decision"
+#~ msgstr "判断に異議"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:52
msgid "Appeal this decision"
-msgstr ""
+msgstr "この判断に異議を申し立てる"
-#: src/view/com/util/moderation/LabelInfo.tsx:55
+#: src/view/com/util/moderation/LabelInfo.tsx:56
msgid "Appeal this decision."
-msgstr ""
+msgstr "この判断に異議を申し立てる"
#: src/view/screens/Settings.tsx:432
msgid "Appearance"
@@ -200,23 +212,23 @@ msgstr "外観"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "本当にアプリパスワード「{name}」を削除しますか?"
-#: src/view/com/composer/Composer.tsx:141
+#: src/view/com/composer/Composer.tsx:142
msgid "Are you sure you'd like to discard this draft?"
msgstr "本当にこの下書きを破棄しますか?"
-#: src/view/screens/ProfileList.tsx:351
+#: src/view/screens/ProfileList.tsx:352
msgid "Are you sure?"
-msgstr "本当ですか?"
+msgstr "本当によろしいですか?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:188
+#: src/view/com/util/forms/PostDropdownBtn.tsx:190
msgid "Are you sure? This cannot be undone."
-msgstr "本当ですか?これは元に戻せません。"
+msgstr "本当によろしいですか?これは元に戻せません。"
#: src/view/com/modals/SelfLabel.tsx:123
msgid "Artistic or non-erotic nudity."
-msgstr "芸術的または非エロティックなヌード。"
+msgstr "芸術的または性的ではないヌード。"
-#: src/view/com/auth/create/CreateAccount.tsx:145
+#: src/view/com/auth/create/CreateAccount.tsx:141
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
#: src/view/com/auth/login/LoginForm.tsx:249
@@ -245,50 +257,49 @@ msgstr "誕生日:"
#: src/view/com/profile/ProfileHeader.tsx:282
#: src/view/com/profile/ProfileHeader.tsx:389
msgid "Block Account"
-msgstr "アカウントのブロック"
+msgstr "アカウントをブロック"
-#: src/view/screens/ProfileList.tsx:521
+#: src/view/screens/ProfileList.tsx:522
msgid "Block accounts"
-msgstr "アカウントのブロック"
+msgstr "アカウントをブロック"
-#: src/view/screens/ProfileList.tsx:471
+#: src/view/screens/ProfileList.tsx:472
msgid "Block list"
-msgstr ""
+msgstr "リストをブロック"
-#: src/view/screens/ProfileList.tsx:306
+#: src/view/screens/ProfileList.tsx:307
msgid "Block these accounts?"
msgstr "これらのアカウントをブロックしますか?"
#: src/view/screens/Moderation.tsx:123
msgid "Blocked accounts"
-msgstr "ブロックされたブロック"
+msgstr "ブロック中のアカウント"
#: src/view/screens/ModerationBlockedAccounts.tsx:106
msgid "Blocked Accounts"
-msgstr "ブロックされたアカウント"
+msgstr "ブロック中のアカウント"
#: src/view/com/profile/ProfileHeader.tsx:284
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
-msgstr "ブロックされたアカウントは、スレッド内で返信したり、ユーザーに言及したり、その他の方法でユーザーとやり取りすることはできません。"
+msgstr "ブロック中のアカウントは、あなたのスレッドでの返信、あなたへのメンション、その他の方法であなたとやり取りすることはできません。"
#: src/view/screens/ModerationBlockedAccounts.tsx:114
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
-msgstr "ブロックされたアカウントは、スレッド内で返信したり、ユーザーに言及したり、その他の方法でユーザーとやり取りすることはできません。あなたは相手のコンテンツを見ることができず、相手はあなたのコンテンツを見ることができなくなります。"
+msgstr "ブロック中のアカウントは、あなたのスレッドでの返信、あなたへのメンション、その他の方法であなたとやり取りすることはできません。あなたは相手のコンテンツを見ることができず、相手はあなたのコンテンツを見ることができなくなります。"
#: src/view/com/post-thread/PostThread.tsx:251
msgid "Blocked post."
msgstr "投稿をブロックしました。"
-#: src/view/screens/ProfileList.tsx:308
+#: src/view/screens/ProfileList.tsx:309
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
-msgstr "ブロックは公開されます。ブロックされたアカウントは、スレッド内で返信したり、ユーザーに言及したり、その他の方法でユーザーとやり取りすることはできません。"
+msgstr "ブロックしたことは公開されます。ブロック中のアカウントは、あなたのスレッドでの返信、あなたへのメンション、その他の方法であなたとやり取りすることはできません。"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
msgid "Blog"
-msgstr ""
+msgstr "ブログ"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:31
-#: src/view/com/auth/SplashScreen.tsx:26
msgid "Bluesky"
msgstr "Bluesky"
@@ -298,19 +309,19 @@ msgstr "Blueskyは柔軟です。"
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:69
msgid "Bluesky is open."
-msgstr "Blueskyは開いています。"
+msgstr "Blueskyは開かれています。"
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:56
msgid "Bluesky is public."
-msgstr "Blueskyはオープンです。"
+msgstr "Blueskyはパブリックです。"
#: src/view/com/modals/Waitlist.tsx:70
msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon."
-msgstr "Blueskyはより健全なコミュニティを構築するために招待状を使用します。招待状をお持ちでない方の場合、waitlistに申し込めば招待状をお送りします。"
+msgstr "Blueskyはより健全なコミュニティを構築するために招待状を使用します。招待状をお持ちでない場合、Waitlistにお申し込みいただくと招待状をお送りします。"
#: src/view/screens/Moderation.tsx:225
msgid "Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private."
-msgstr ""
+msgstr "Blueskyはログアウトしたユーザーにあなたのプロフィールや投稿を表示しません。他のアプリはこのリクエストに応じない場合があります。この設定はあなたのアカウントを非公開にするものではありません。"
#: src/view/com/modals/ServerInput.tsx:78
msgid "Bluesky.Social"
@@ -322,7 +333,7 @@ msgstr "ビルドバージョン {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
msgid "Business"
-msgstr ""
+msgstr "ビジネス"
#: src/view/com/composer/photos/OpenCameraBtn.tsx:60
#: src/view/com/util/UserAvatar.tsx:221
@@ -332,10 +343,10 @@ msgstr "カメラ"
#: src/view/com/modals/AddAppPasswords.tsx:214
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
-msgstr "文字、数字、スペース、ハイフン、およびアンダースコアのみを含めることができます。長さは4文字以上32文字以下である必要があります。"
+msgstr "文字、数字、スペース、ハイフン、およびアンダースコアのみが使用可能です。長さは4文字以上32文字以下である必要があります。"
-#: src/view/com/composer/Composer.tsx:279
-#: src/view/com/composer/Composer.tsx:282
+#: src/view/com/composer/Composer.tsx:285
+#: src/view/com/composer/Composer.tsx:288
#: src/view/com/modals/AltImage.tsx:127
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
@@ -377,7 +388,7 @@ msgstr "プロフィールの編集をキャンセル"
#: src/view/com/modals/Repost.tsx:64
msgid "Cancel quote post"
-msgstr "引用投稿をキャンセル"
+msgstr "引用をキャンセル"
#: src/view/com/modals/ListAddRemoveUsers.tsx:87
#: src/view/shell/desktop/Search.tsx:178
@@ -403,23 +414,23 @@ msgstr "ハンドルを変更"
#: src/view/com/modals/VerifyEmail.tsx:141
msgid "Change my email"
-msgstr "Eメールの変更"
+msgstr "メールアドレスを変更"
#: src/view/com/modals/ChangeEmail.tsx:109
msgid "Change Your Email"
-msgstr "Eメールを変更"
+msgstr "メールアドレスを変更"
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:121
msgid "Check out some recommended feeds. Tap + to add them to your list of pinned feeds."
-msgstr "推奨フィードを確認してください。「+」をタップすればフィードに追加されます。"
+msgstr "おすすめのフィードを確認してください。「+」をタップするとピン留めしたフィードのリストに追加されます。"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:185
msgid "Check out some recommended users. Follow them to see similar users."
-msgstr "推奨ユーザーを確認してください。フォローする事であなたに合ったユーザーが見つかるかもしれません。"
+msgstr "おすすめのユーザーを確認してください。フォローすることであなたに合ったユーザーが見つかるかもしれません。"
#: src/view/com/modals/DeleteAccount.tsx:163
msgid "Check your inbox for an email with the confirmation code to enter below:"
-msgstr "Eメールの受信トレイを確認して、以下に入力するコードが記載されたメールが届いていないか確認してください:"
+msgstr "入力したメールアドレスの受信トレイを確認して、以下に入力するための確認コードが記載されたメールが届いていないか確認してください:"
#: src/view/com/modals/ServerInput.tsx:38
msgid "Choose Service"
@@ -427,7 +438,7 @@ msgstr "サービスを選択"
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:83
msgid "Choose the algorithms that power your experience with custom feeds."
-msgstr "カスタムフィードを使用して経験を強化するアルゴリズムを選択します。"
+msgstr "カスタムフィードを使用してあなたの体験を強化するアルゴリズムを選択します。"
#: src/view/com/auth/create/Step2.tsx:106
msgid "Choose your password"
@@ -439,7 +450,7 @@ msgstr "レガシーストレージデータをすべてクリア"
#: src/view/screens/Settings.tsx:696
msgid "Clear all legacy storage data (restart after this)"
-msgstr "すべてのレガシーストレージデータをクリア(この後再起動)"
+msgstr "すべてのレガシーストレージデータをクリア(この後再起動します)"
#: src/view/screens/Settings.tsx:706
msgid "Clear all storage data"
@@ -447,7 +458,7 @@ msgstr "すべてのストレージデータをクリア"
#: src/view/screens/Settings.tsx:708
msgid "Clear all storage data (restart after this)"
-msgstr "すべてのストレージデータをクリア(この後再起動)"
+msgstr "すべてのストレージデータをクリア(この後再起動します)"
#: src/view/com/util/forms/SearchInput.tsx:73
#: src/view/screens/Search/Search.tsx:577
@@ -498,7 +509,7 @@ msgstr "変更を確認"
#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:34
msgid "Confirm content language settings"
-msgstr "コンテンツ言語の設定を確認"
+msgstr "コンテンツの言語設定を確認"
#: src/view/com/modals/DeleteAccount.tsx:209
msgid "Confirm delete account"
@@ -510,31 +521,31 @@ msgstr "アカウントの削除を確認"
msgid "Confirmation code"
msgstr "確認コード"
-#: src/view/com/auth/create/CreateAccount.tsx:178
+#: src/view/com/auth/create/CreateAccount.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:268
msgid "Connecting..."
msgstr "接続中..."
#: src/view/screens/Moderation.tsx:81
msgid "Content filtering"
-msgstr "コンテンツフィルタリング"
+msgstr "コンテンツのフィルタリング"
#: src/view/com/modals/ContentFilteringSettings.tsx:44
msgid "Content Filtering"
-msgstr "コンテンツフィルタリング"
+msgstr "コンテンツのフィルタリング"
#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:74
#: src/view/screens/LanguageSettings.tsx:278
msgid "Content Languages"
-msgstr "コンテンツ言語"
+msgstr "コンテンツの言語"
#: src/view/com/util/moderation/ScreenHider.tsx:78
msgid "Content Warning"
-msgstr "コンテンツ警告"
+msgstr "コンテンツの警告"
#: src/view/com/composer/labels/LabelsBtn.tsx:31
msgid "Content warnings"
-msgstr "コンテンツ警告"
+msgstr "コンテンツの警告"
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
@@ -544,51 +555,51 @@ msgstr "続行"
#: src/view/com/modals/AddAppPasswords.tsx:193
#: src/view/com/modals/InviteCodes.tsx:179
msgid "Copied"
-msgstr "コピー済み"
+msgstr "コピーしました"
#: src/view/com/modals/AddAppPasswords.tsx:186
msgid "Copy"
msgstr "コピー"
-#: src/view/screens/ProfileList.tsx:383
+#: src/view/screens/ProfileList.tsx:384
msgid "Copy link to list"
-msgstr ""
+msgstr "リストへのリンクをコピー"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:129
+#: src/view/com/util/forms/PostDropdownBtn.tsx:131
msgid "Copy link to post"
-msgstr ""
+msgstr "投稿へのリンクをコピー"
#: src/view/com/profile/ProfileHeader.tsx:338
msgid "Copy link to profile"
-msgstr ""
+msgstr "プロフィールへのリンクをコピー"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:115
+#: src/view/com/util/forms/PostDropdownBtn.tsx:117
msgid "Copy post text"
-msgstr "投稿テキストをコピー"
+msgstr "投稿のテキストをコピー"
#: src/view/screens/CopyrightPolicy.tsx:29
msgid "Copyright Policy"
msgstr "著作権ポリシー"
-#: src/view/screens/ProfileFeed.tsx:98
+#: src/view/screens/ProfileFeed.tsx:94
msgid "Could not load feed"
-msgstr "フィードのロードに失敗"
+msgstr "フィードのロードに失敗しました"
-#: src/view/screens/ProfileList.tsx:829
+#: src/view/screens/ProfileList.tsx:830
msgid "Could not load list"
-msgstr "リストのロードに失敗"
+msgstr "リストのロードに失敗しました"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:41
+#: src/view/com/auth/SplashScreen.tsx:46
msgid "Create a new account"
msgstr "新しいアカウントを作成"
-#: src/view/com/auth/create/CreateAccount.tsx:124
+#: src/view/com/auth/create/CreateAccount.tsx:120
msgid "Create Account"
msgstr "アカウントを作成"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:38
+#: src/view/com/auth/SplashScreen.tsx:43
msgid "Create new account"
msgstr "新しいアカウントを作成"
@@ -618,8 +629,8 @@ msgstr "アカウントを削除"
msgid "Delete app password"
msgstr "アプリパスワードを削除"
-#: src/view/screens/ProfileList.tsx:350
-#: src/view/screens/ProfileList.tsx:410
+#: src/view/screens/ProfileList.tsx:351
+#: src/view/screens/ProfileList.tsx:411
msgid "Delete List"
msgstr "リストを削除"
@@ -631,11 +642,11 @@ msgstr "マイアカウントを削除"
msgid "Delete my account…"
msgstr "マイアカウントを削除…"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:183
+#: src/view/com/util/forms/PostDropdownBtn.tsx:185
msgid "Delete post"
msgstr "投稿を削除"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:189
msgid "Delete this post?"
msgstr "この投稿を削除しますか?"
@@ -658,21 +669,21 @@ msgstr "開発者サーバー"
msgid "Developer Tools"
msgstr "開発者ツール"
-#: src/view/com/composer/Composer.tsx:142
+#: src/view/com/composer/Composer.tsx:143
msgid "Discard"
msgstr "破棄"
-#: src/view/com/composer/Composer.tsx:136
+#: src/view/com/composer/Composer.tsx:137
msgid "Discard draft"
-msgstr "ドラフトを破棄"
+msgstr "下書きを破棄"
#: src/view/screens/Moderation.tsx:207
msgid "Discourage apps from showing my account to logged-out users"
-msgstr ""
+msgstr "アプリがログアウトしたユーザーに自分のアカウントを表示しないようにする"
#: src/view/screens/Feeds.tsx:405
msgid "Discover new feeds"
-msgstr "新しいフィードを検出"
+msgstr "新しいフィードを見つける"
#: src/view/com/modals/EditProfile.tsx:191
msgid "Display name"
@@ -707,14 +718,14 @@ msgstr "完了{extraText}"
#: src/view/com/modals/InviteCodes.tsx:94
msgid "Each code works once. You'll receive more invite codes periodically."
-msgstr "それぞれのコードは一度ずつ動作します。定期的により多くの招待コードを受け取ります。"
+msgstr "それぞれのコードは一度ずつ動作します。定期的に招待コードをお送りします。"
#: src/view/com/composer/photos/Gallery.tsx:144
#: src/view/com/modals/EditImage.tsx:207
msgid "Edit image"
msgstr "画像を編集"
-#: src/view/screens/ProfileList.tsx:398
+#: src/view/screens/ProfileList.tsx:399
msgid "Edit list details"
msgstr "リストの詳細を編集"
@@ -737,34 +748,34 @@ msgstr "プロフィールを編集"
#: src/view/screens/Feeds.tsx:330
msgid "Edit Saved Feeds"
-msgstr "保存済みフィードを編集"
+msgstr "保存されたフィードを編集"
#: src/view/com/auth/create/Step2.tsx:90
#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
-msgstr "Eメール"
+msgstr "メールアドレス"
#: src/view/com/auth/create/Step2.tsx:81
msgid "Email address"
-msgstr "Eメールアドレス"
+msgstr "メールアドレス"
#: src/view/com/modals/ChangeEmail.tsx:111
msgid "Email Updated"
-msgstr "Eメール更新"
+msgstr "メールアドレスを更新"
#: src/view/screens/Settings.tsx:290
msgid "Email:"
-msgstr "Eメール:"
+msgstr "メールアドレス:"
#: src/view/screens/PreferencesHomeFeed.tsx:138
msgid "Enable this setting to only see replies between people you follow."
-msgstr "この設定を有効にすると、フォローしているユーザー間の応答だけが表示されます。"
+msgstr "この設定を有効にすると、フォローしているユーザー間の返信だけが表示されます。"
#: src/view/screens/Profile.tsx:425
msgid "End of feed"
-msgstr ""
+msgstr "フィードの終わり"
#: src/view/com/auth/create/Step1.tsx:71
msgid "Enter the address of your provider:"
@@ -772,15 +783,15 @@ msgstr "プロバイダーのアドレスを入力してください:"
#: src/view/com/modals/ChangeHandle.tsx:369
msgid "Enter the domain you want to use"
-msgstr "使用するドメインを入力"
+msgstr "使用するドメインを入力してください"
#: src/view/com/auth/login/ForgotPasswordForm.tsx:101
msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
-msgstr "アカウントの作成に使用したEメールを入力します。新しいパスワードを設定できるように、「リセットコード」をお送りします。"
+msgstr "アカウントの作成に使用したメールアドレスを入力します。新しいパスワードを設定できるように、「リセットコード」をお送りします。"
#: src/view/com/auth/create/Step2.tsx:86
msgid "Enter your email address"
-msgstr "Eメールアドレスを入力"
+msgstr "メールアドレスを入力してください"
#: src/view/com/modals/ChangeEmail.tsx:117
msgid "Enter your new email address below."
@@ -796,7 +807,7 @@ msgstr "エラー:"
#: src/view/com/modals/Threadgate.tsx:76
msgid "Everybody"
-msgstr ""
+msgstr "全員"
#: src/view/com/lightbox/Lightbox.web.tsx:156
msgid "Expand alt text"
@@ -805,15 +816,15 @@ msgstr "ALTテキストを展開"
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
msgid "Failed to load recommended feeds"
-msgstr "推奨フィードのロードに失敗"
+msgstr "おすすめのフィードのロードに失敗しました"
#: src/view/screens/Feeds.tsx:559
msgid "Feed offline"
-msgstr "フィードはオフライン"
+msgstr "フィードはオフラインです"
#: src/view/com/feeds/FeedPage.tsx:143
msgid "Feed Preferences"
-msgstr "フィード設定"
+msgstr "フィードの設定"
#: src/view/shell/desktop/RightNav.tsx:65
#: src/view/shell/Drawer.tsx:292
@@ -822,8 +833,8 @@ msgstr "フィードバック"
#: src/view/screens/Feeds.tsx:475
#: src/view/screens/Profile.tsx:164
-#: src/view/shell/bottom-bar/BottomBar.tsx:163
-#: src/view/shell/desktop/LeftNav.tsx:335
+#: src/view/shell/bottom-bar/BottomBar.tsx:181
+#: src/view/shell/desktop/LeftNav.tsx:339
#: src/view/shell/Drawer.tsx:455
#: src/view/shell/Drawer.tsx:456
msgid "Feeds"
@@ -831,7 +842,7 @@ msgstr "フィード"
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:57
msgid "Feeds are created by users to curate content. Choose some feeds that you find interesting."
-msgstr "フィードはコンテンツを整理する為にユーザーによって作成されます。興味具かいフィードをいくつか選択してください。"
+msgstr "フィードはコンテンツを整理する為にユーザーによって作成されます。興味のあるフィードをいくつか選択してください。"
#: src/view/screens/SavedFeeds.tsx:156
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
@@ -839,15 +850,15 @@ msgstr "フィードはユーザーがプログラミングの専門知識を持
#: src/view/screens/Search/Search.tsx:422
msgid "Find users on Bluesky"
-msgstr ""
+msgstr "Blueskyでユーザーを検索"
#: src/view/screens/Search/Search.tsx:420
msgid "Find users with the search tool on the right"
-msgstr ""
+msgstr "右側の検索ツールでユーザーを検索"
#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:150
msgid "Finding similar accounts..."
-msgstr "似通ったアカウントを検索中..."
+msgstr "似ているアカウントを検索中..."
#: src/view/screens/PreferencesHomeFeed.tsx:102
msgid "Fine-tune the content you see on your home screen."
@@ -863,11 +874,11 @@ msgstr "フォロー"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:64
msgid "Follow some users to get started. We can recommend you more users based on who you find interesting."
-msgstr "いくつかのユーザーをフォローして開始します。興味を持っている人に基づいて、より多くのユーザーをお勧めできます。"
+msgstr "何人かのユーザーをフォローして開始します。興味を持っている人に基づいて、より多くのユーザーをおすすめします。"
#: src/view/com/modals/Threadgate.tsx:98
msgid "Followed users"
-msgstr ""
+msgstr "フォローしているユーザー"
#: src/view/screens/PreferencesHomeFeed.tsx:145
msgid "Followed users only"
@@ -892,7 +903,7 @@ msgstr "あなたをフォロー"
#: src/view/com/modals/DeleteAccount.tsx:107
msgid "For security reasons, we'll need to send a confirmation code to your email address."
-msgstr "セキュリティ上の理由から、Eメールアドレスに確認コードを送信する必要があります。"
+msgstr "セキュリティ上の理由から、メールアドレスに確認コードを送信する必要があります。"
#: src/view/com/modals/AddAppPasswords.tsx:207
msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
@@ -900,16 +911,16 @@ msgstr "セキュリティ上の理由から、これを再度表示すること
#: src/view/com/auth/login/LoginForm.tsx:231
msgid "Forgot"
-msgstr "失念"
+msgstr "忘れた"
#: src/view/com/auth/login/LoginForm.tsx:228
msgid "Forgot password"
-msgstr "パスワードを失念"
+msgstr "パスワードを忘れた"
#: src/view/com/auth/login/Login.tsx:127
#: src/view/com/auth/login/Login.tsx:143
msgid "Forgot Password"
-msgstr "パスワードを失念"
+msgstr "パスワードを忘れた"
#: src/view/com/composer/photos/SelectPhotoBtn.tsx:43
msgid "Gallery"
@@ -919,17 +930,17 @@ msgstr "ギャラリー"
msgid "Get Started"
msgstr "はじめに"
-#: src/view/com/auth/LoggedOut.tsx:70
-#: src/view/com/auth/LoggedOut.tsx:71
+#: src/view/com/auth/LoggedOut.tsx:81
+#: src/view/com/auth/LoggedOut.tsx:82
#: src/view/com/util/moderation/ScreenHider.tsx:123
#: src/view/shell/desktop/LeftNav.tsx:103
msgid "Go back"
msgstr "戻る"
-#: src/view/screens/ProfileFeed.tsx:107
-#: src/view/screens/ProfileFeed.tsx:112
-#: src/view/screens/ProfileList.tsx:838
-#: src/view/screens/ProfileList.tsx:843
+#: src/view/screens/ProfileFeed.tsx:103
+#: src/view/screens/ProfileFeed.tsx:108
+#: src/view/screens/ProfileList.tsx:839
+#: src/view/screens/ProfileList.tsx:844
msgid "Go Back"
msgstr "戻る"
@@ -959,36 +970,36 @@ msgstr "非表示"
#: src/view/com/notifications/FeedItem.tsx:308
msgid "Hide user list"
-msgstr "ユーザーリストを非表示にする"
+msgstr "ユーザーリストを非表示"
#: src/view/com/posts/FeedErrorMessage.tsx:110
msgid "Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue."
-msgstr ""
+msgstr "フィードサーバーに問い合わせたところ、なんらかの問題が発生しました。この問題をフィードのオーナーにお知らせください。"
#: src/view/com/posts/FeedErrorMessage.tsx:98
msgid "Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue."
-msgstr ""
+msgstr "フィードサーバーの設定が間違っているようです。この問題をフィードのオーナーにお知らせください。"
#: src/view/com/posts/FeedErrorMessage.tsx:104
msgid "Hmm, the feed server appears to be offline. Please let the feed owner know about this issue."
-msgstr ""
+msgstr "フィードサーバーがオフラインのようです。この問題をフィードのオーナーにお知らせください。"
#: src/view/com/posts/FeedErrorMessage.tsx:101
msgid "Hmm, the feed server gave a bad response. Please let the feed owner know about this issue."
-msgstr ""
+msgstr "フィードサーバーの反応が悪いようです。この問題をフィードのオーナーにお知らせください。"
#: src/view/com/posts/FeedErrorMessage.tsx:95
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
-msgstr ""
+msgstr "このフィードが見つからないようです。もしかしたら削除されたのかもしれません。"
-#: src/view/shell/bottom-bar/BottomBar.tsx:116
-#: src/view/shell/desktop/LeftNav.tsx:297
+#: src/view/shell/bottom-bar/BottomBar.tsx:137
+#: src/view/shell/desktop/LeftNav.tsx:303
#: src/view/shell/Drawer.tsx:379
#: src/view/shell/Drawer.tsx:380
msgid "Home"
msgstr "ホーム"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:99
+#: src/view/com/pager/FeedsTabBarMobile.tsx:96
#: src/view/screens/PreferencesHomeFeed.tsx:95
#: src/view/screens/Settings.tsx:481
msgid "Home Feed Preferences"
@@ -1001,15 +1012,15 @@ msgstr "ホスティングプロバイダー"
#: src/view/com/auth/create/Step1.tsx:76
#: src/view/com/auth/create/Step1.tsx:81
msgid "Hosting provider address"
-msgstr "ホスティングプロバイダーアドレス"
+msgstr "ホスティングプロバイダーのアドレス"
#: src/view/com/modals/VerifyEmail.tsx:208
msgid "I have a code"
-msgstr "コードを持っている"
+msgstr "コードを持っています"
#: src/view/com/modals/ChangeHandle.tsx:281
msgid "I have my own domain"
-msgstr "自分のドメインを持っている"
+msgstr "自分のドメインを持っています"
#: src/view/com/modals/SelfLabel.tsx:127
msgid "If none are selected, suitable for all ages."
@@ -1022,7 +1033,7 @@ msgstr "画像のALTテキスト"
#: src/view/com/util/UserAvatar.tsx:308
#: src/view/com/util/UserBanner.tsx:116
msgid "Image options"
-msgstr "イメージオプション"
+msgstr "画像のオプション"
#: src/view/com/auth/login/LoginForm.tsx:113
msgid "Invalid username or password"
@@ -1035,7 +1046,7 @@ msgstr "招待"
#: src/view/com/modals/InviteCodes.tsx:91
#: src/view/screens/Settings.tsx:371
msgid "Invite a Friend"
-msgstr "友人を招待"
+msgstr "友達を招待"
#: src/view/com/auth/create/Step2.tsx:57
msgid "Invite code"
@@ -1043,36 +1054,36 @@ msgstr "招待コード"
#: src/view/com/auth/create/state.ts:136
msgid "Invite code not accepted. Check that you input it correctly and try again."
-msgstr "招待コードが確認できません。正しく入力されている事を確認し、もう一度実行してください。"
+msgstr "招待コードが確認できません。正しく入力されていることを確認し、もう一度実行してください。"
#: src/view/shell/Drawer.tsx:621
msgid "Invite codes: {invitesAvailable} available"
-msgstr ""
+msgstr "使用可能な招待コード: {invitesAvailable} 個"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
msgid "Jobs"
-msgstr ""
+msgstr "仕事"
#: src/view/com/modals/Waitlist.tsx:67
msgid "Join the waitlist"
-msgstr "待機リストに参加"
+msgstr "Waitlistに参加"
#: src/view/com/auth/create/Step2.tsx:68
#: src/view/com/auth/create/Step2.tsx:72
msgid "Join the waitlist."
-msgstr "待機リストに参加します。"
+msgstr "Waitlistに参加します。"
#: src/view/com/modals/Waitlist.tsx:124
msgid "Join Waitlist"
-msgstr "待機リストに参加"
+msgstr "Waitlistに参加"
#: src/view/com/composer/select-language/SelectLangBtn.tsx:104
msgid "Language selection"
-msgstr "言語選択"
+msgstr "言語の選択"
#: src/view/screens/LanguageSettings.tsx:89
msgid "Language Settings"
-msgstr "言語設定"
+msgstr "言語の設定"
#: src/view/screens/Settings.tsx:541
msgid "Languages"
@@ -1080,7 +1091,7 @@ msgstr "言語"
#: src/view/com/util/moderation/ContentHider.tsx:101
msgid "Learn more"
-msgstr ""
+msgstr "詳細"
#: src/view/com/util/moderation/PostAlerts.tsx:47
#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:65
@@ -1098,7 +1109,7 @@ msgstr "この警告の詳細"
#: src/view/screens/Moderation.tsx:242
msgid "Learn more about what is public on Bluesky."
-msgstr ""
+msgstr "Blueskyで公開されている内容はこちらを参照してください。"
#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:82
msgid "Leave them all unchecked to see any language."
@@ -1118,22 +1129,22 @@ msgstr "パスワードをリセットしましょう!"
msgid "Library"
msgstr "ライブラリー"
-#: src/view/screens/ProfileFeed.tsx:627
+#: src/view/screens/ProfileFeed.tsx:577
msgid "Like this feed"
msgstr "このフィードをいいね"
#: src/view/screens/PostLikedBy.tsx:27
#: src/view/screens/ProfileFeedLikedBy.tsx:27
msgid "Liked by"
-msgstr "いいねした人:"
+msgstr "いいねした人"
#: src/view/screens/Profile.tsx:163
msgid "Likes"
-msgstr ""
+msgstr "いいね"
#: src/view/screens/Moderation.tsx:203
#~ msgid "Limit the visibility of my account to logged-out users"
-#~ msgstr ""
+#~ msgstr "ログアウトしたユーザーに対して私のアカウントの閲覧を制限"
#: src/view/com/modals/CreateOrEditList.tsx:186
msgid "List Avatar"
@@ -1141,10 +1152,10 @@ msgstr "リストアバター"
#: src/view/com/modals/CreateOrEditList.tsx:199
msgid "List Name"
-msgstr "リスト名"
+msgstr "リストの名前"
#: src/view/screens/Profile.tsx:165
-#: src/view/shell/desktop/LeftNav.tsx:372
+#: src/view/shell/desktop/LeftNav.tsx:376
#: src/view/shell/Drawer.tsx:471
#: src/view/shell/Drawer.tsx:472
msgid "Lists"
@@ -1161,7 +1172,7 @@ msgstr "新しい通知をロード"
#: src/view/com/feeds/FeedPage.tsx:189
msgid "Load new posts"
-msgstr "新しい投稿をロード"
+msgstr "投稿をロード"
#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95
msgid "Loading..."
@@ -1173,68 +1184,67 @@ msgstr "ローカル開発者サーバー"
#: src/view/screens/Moderation.tsx:134
#~ msgid "Logged-out users"
-#~ msgstr ""
+#~ msgstr "ログアウトしたユーザー"
#: src/view/screens/Moderation.tsx:136
msgid "Logged-out visibility"
-msgstr ""
+msgstr "ログアウトした状態の可視性"
#: src/view/com/auth/login/ChooseAccountForm.tsx:133
msgid "Login to account that is not listed"
msgstr "リストにないアカウントにログイン"
#: src/view/screens/ProfileFeed.tsx:472
-msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
-msgstr ""
+#~ msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
+#~ msgstr "このフィードはBlueskyのアカウントを持っているユーザーのみが利用できるようです。このフィードを表示するには、サインアップするかサインインしてください!"
#: src/view/com/modals/LinkWarning.tsx:63
msgid "Make sure this is where you intend to go!"
-msgstr "意図する場所である事を確認してください!"
+msgstr "意図した場所であることを確認してください!"
#: src/view/screens/Profile.tsx:162
msgid "Media"
-msgstr ""
+msgstr "メディア"
#: src/view/com/threadgate/WhoCanReply.tsx:139
msgid "mentioned users"
-msgstr ""
+msgstr "メンションされたユーザー"
#: src/view/com/modals/Threadgate.tsx:93
msgid "Mentioned users"
-msgstr ""
+msgstr "メンションされたユーザー"
#: src/view/screens/Search/Search.tsx:537
msgid "Menu"
msgstr "メニュー"
#: src/view/com/posts/FeedErrorMessage.tsx:194
-#: src/view/screens/ProfileFeed.tsx:480
msgid "Message from server"
-msgstr ""
+msgstr "サーバーからのメッセージ"
#: src/view/screens/Moderation.tsx:64
#: src/view/screens/Settings.tsx:563
-#: src/view/shell/desktop/LeftNav.tsx:390
+#: src/view/shell/desktop/LeftNav.tsx:394
#: src/view/shell/Drawer.tsx:490
#: src/view/shell/Drawer.tsx:491
msgid "Moderation"
-msgstr "モデレート"
+msgstr "モデレーション"
#: src/view/screens/Moderation.tsx:95
msgid "Moderation lists"
-msgstr "モデレートリスト"
+msgstr "モデレーションリスト"
#: src/view/screens/ModerationModlists.tsx:58
msgid "Moderation Lists"
-msgstr ""
+msgstr "モデレーションリスト"
#: src/view/shell/desktop/Feeds.tsx:53
msgid "More feeds"
msgstr "その他のフィード"
#: src/view/com/profile/ProfileHeader.tsx:548
-#: src/view/screens/ProfileFeed.tsx:365
-#: src/view/screens/ProfileList.tsx:582
+#: src/view/screens/ProfileFeed.tsx:360
+#: src/view/screens/ProfileList.tsx:583
msgid "More options"
msgstr "その他のオプション"
@@ -1242,37 +1252,37 @@ msgstr "その他のオプション"
msgid "Mute Account"
msgstr "アカウントをミュート"
-#: src/view/screens/ProfileList.tsx:509
+#: src/view/screens/ProfileList.tsx:510
msgid "Mute accounts"
msgstr "アカウントをミュート"
-#: src/view/screens/ProfileList.tsx:456
+#: src/view/screens/ProfileList.tsx:457
msgid "Mute list"
-msgstr ""
+msgstr "リストをミュート"
-#: src/view/screens/ProfileList.tsx:269
+#: src/view/screens/ProfileList.tsx:270
msgid "Mute these accounts?"
msgstr "これらのアカウントをミュートしますか?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:147
+#: src/view/com/util/forms/PostDropdownBtn.tsx:149
msgid "Mute thread"
msgstr "スレッドをミュート"
#: src/view/screens/Moderation.tsx:109
msgid "Muted accounts"
-msgstr "ミュート済みアカウント"
+msgstr "ミュートされたアカウント"
#: src/view/screens/ModerationMutedAccounts.tsx:106
msgid "Muted Accounts"
-msgstr "ミュート済みアカウント"
+msgstr "ミュートされたアカウント"
#: src/view/screens/ModerationMutedAccounts.tsx:114
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
-msgstr "ミュート済みのアカウントは、フィードと通知からの投稿が削除されます。ミュート設定は知られることはありません。"
+msgstr "ミュートをされたアカウントは、フィードと通知からの投稿が削除されます。ミュートの設定は完全に非公開です。"
-#: src/view/screens/ProfileList.tsx:271
+#: src/view/screens/ProfileList.tsx:272
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
-msgstr "ミュートはプライベートです。ミュート済みアカウントはユーザーと相互作用することができますが、そのアカウントの投稿や通知を受信することはできません。"
+msgstr "ミュートは非公開です。ミュートをされたアカウントはあなたと引き続き関わることができますが、そのアカウントの投稿や通知を受信することはできません。"
#: src/view/com/modals/BirthDateSettings.tsx:56
msgid "My Birthday"
@@ -1288,7 +1298,7 @@ msgstr "マイプロフィール"
#: src/view/screens/Settings.tsx:520
msgid "My Saved Feeds"
-msgstr "保存済みフィード"
+msgstr "保存されたフィード"
#: src/view/com/modals/AddAppPasswords.tsx:177
#: src/view/com/modals/CreateOrEditList.tsx:211
@@ -1297,7 +1307,7 @@ msgstr "名前"
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
msgid "Never lose access to your followers and data."
-msgstr "決してフォロワーやデータへのアクセスを失わないでください。"
+msgstr "フォロワーやデータへのアクセスを失うことはありません。"
#: src/view/screens/Lists.tsx:76
#: src/view/screens/ModerationModlists.tsx:78
@@ -1307,9 +1317,9 @@ msgstr "新規"
#: src/view/com/feeds/FeedPage.tsx:200
#: src/view/screens/Feeds.tsx:510
#: src/view/screens/Profile.tsx:353
-#: src/view/screens/ProfileFeed.tsx:441
-#: src/view/screens/ProfileList.tsx:192
-#: src/view/screens/ProfileList.tsx:220
+#: src/view/screens/ProfileFeed.tsx:430
+#: src/view/screens/ProfileList.tsx:193
+#: src/view/screens/ProfileList.tsx:221
#: src/view/shell/desktop/LeftNav.tsx:246
msgid "New post"
msgstr "新しい投稿"
@@ -1318,7 +1328,7 @@ msgstr "新しい投稿"
msgid "New Post"
msgstr "新しい投稿"
-#: src/view/com/auth/create/CreateAccount.tsx:158
+#: src/view/com/auth/create/CreateAccount.tsx:154
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
#: src/view/com/auth/login/LoginForm.tsx:281
@@ -1336,20 +1346,20 @@ msgstr "次の画像"
#: src/view/screens/PreferencesHomeFeed.tsx:226
#: src/view/screens/PreferencesHomeFeed.tsx:263
msgid "No"
-msgstr "なし"
+msgstr "いいえ"
-#: src/view/screens/ProfileFeed.tsx:620
-#: src/view/screens/ProfileList.tsx:710
+#: src/view/screens/ProfileFeed.tsx:570
+#: src/view/screens/ProfileList.tsx:711
msgid "No description"
-msgstr "説明なし"
+msgstr "説明はありません"
#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:97
msgid "No result"
-msgstr "結果なし"
+msgstr "結果はありません"
#: src/view/screens/Feeds.tsx:452
msgid "No results found for \"{query}\""
-msgstr "「\\{query}」の検索結果がない"
+msgstr "「{query}」の検索結果はありません"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
#: src/view/screens/Search/Search.tsx:271
@@ -1357,11 +1367,11 @@ msgstr "「\\{query}」の検索結果がない"
#: src/view/screens/Search/Search.tsx:615
#: src/view/shell/desktop/Search.tsx:210
msgid "No results found for {query}"
-msgstr "\\{query}の検索結果がない"
+msgstr "「{query}」の検索結果はありません"
#: src/view/com/modals/Threadgate.tsx:82
msgid "Nobody"
-msgstr ""
+msgstr "返信不可"
#: src/view/com/modals/SelfLabel.tsx:135
msgid "Not Applicable."
@@ -1369,16 +1379,16 @@ msgstr "該当なし。"
#: src/view/screens/Moderation.tsx:227
#~ msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users."
-#~ msgstr ""
+#~ msgstr "注記:Blueskyはオープンでパブリックなネットワークであり、この設定を有効にしてもログインしているユーザーはあなたのプロフィールや投稿を制限なく閲覧できます。この設定はBlueskyのアプリおよびウェブサイト上のみでのあなたのコンテンツの可視性を制限するものです。Blueskyのコンテンツを表示するサードパーティーのアプリやウェブサイトなどはこの設定を尊重しない場合があり、ログアウトしたユーザーに対しあなたのコンテンツが表示される可能性があります。"
#: src/view/screens/Moderation.tsx:232
msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
-msgstr ""
+msgstr "注記:Blueskyはオープンでパブリックなネットワークです。この設定はBlueskyのアプリおよびウェブサイト上のみでのあなたのコンテンツの可視性を制限するものであり、他のアプリではこの設定を尊重しない場合があります。他のアプリやウェブサイトでは、ログアウトしたユーザーにあなたのコンテンツが表示される場合があります。"
#: src/view/screens/Notifications.tsx:109
#: src/view/screens/Notifications.tsx:133
-#: src/view/shell/bottom-bar/BottomBar.tsx:187
-#: src/view/shell/desktop/LeftNav.tsx:354
+#: src/view/shell/bottom-bar/BottomBar.tsx:205
+#: src/view/shell/desktop/LeftNav.tsx:358
#: src/view/shell/Drawer.tsx:416
#: src/view/shell/Drawer.tsx:417
msgid "Notifications"
@@ -1392,15 +1402,15 @@ msgstr "ちょっと!"
msgid "Okay"
msgstr "OK"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:354
msgid "One or more images is missing alt text."
-msgstr "1つ以上の画像にALTテキストがありません。"
+msgstr "1つもしくは複数の画像にALTテキストがありません。"
#: src/view/com/threadgate/WhoCanReply.tsx:100
msgid "Only {0} can reply."
-msgstr ""
+msgstr "{0}のみ返信可能"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:79
+#: src/view/com/pager/FeedsTabBarMobile.tsx:76
msgid "Open navigation"
msgstr "ナビゲーションを開く"
@@ -1411,7 +1421,7 @@ msgstr "構成可能な言語設定を開く"
#: src/view/shell/desktop/RightNav.tsx:148
#: src/view/shell/Drawer.tsx:622
msgid "Opens list of invite codes"
-msgstr ""
+msgstr "招待コードのリストを開く"
#: src/view/com/modals/ChangeHandle.tsx:279
msgid "Opens modal for using custom domain"
@@ -1419,7 +1429,7 @@ msgstr "カスタムドメインを使用するためのモーダルを開く"
#: src/view/screens/Settings.tsx:558
msgid "Opens moderation settings"
-msgstr "モデレート設定を開く"
+msgstr "モデレーションの設定を開く"
#: src/view/screens/Settings.tsx:514
msgid "Opens screen with all saved feeds"
@@ -1427,11 +1437,11 @@ msgstr "保存されたすべてのフィードで画面を開く"
#: src/view/screens/Settings.tsx:581
msgid "Opens the app password settings page"
-msgstr "アプリのパスワード設定ページを開く"
+msgstr "アプリパスワード設定ページを開く"
#: src/view/screens/Settings.tsx:473
msgid "Opens the home feed preferences"
-msgstr "ホームフィード設定を開きます"
+msgstr "ホームフィードの設定を開く"
#: src/view/screens/Settings.tsx:664
msgid "Opens the storybook page"
@@ -1443,7 +1453,7 @@ msgstr "システムログのページを開く"
#: src/view/screens/Settings.tsx:494
msgid "Opens the threads preferences"
-msgstr "スレッド設定を開きます"
+msgstr "スレッドの設定を開く"
#: src/view/com/auth/login/ChooseAccountForm.tsx:138
msgid "Other account"
@@ -1460,7 +1470,7 @@ msgstr "その他..."
#: src/view/screens/NotFound.tsx:42
#: src/view/screens/NotFound.tsx:45
msgid "Page not found"
-msgstr "ページが見つからない"
+msgstr "ページが見つかりません"
#: src/view/com/auth/create/Step2.tsx:101
#: src/view/com/auth/create/Step2.tsx:111
@@ -1472,7 +1482,7 @@ msgstr "パスワード"
#: src/view/com/auth/login/Login.tsx:157
msgid "Password updated"
-msgstr "パスワードが更新された"
+msgstr "パスワードが更新されました"
#: src/view/com/auth/login/PasswordUpdatedForm.tsx:28
msgid "Password updated!"
@@ -1480,11 +1490,11 @@ msgstr "パスワードが更新されました!"
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
-msgstr "写真は成人向けです。"
+msgstr "成人向けの写真です。"
#: src/view/screens/SavedFeeds.tsx:88
msgid "Pinned Feeds"
-msgstr "ピン接続フィード"
+msgstr "ピン留めされたフィード"
#: src/view/com/auth/create/state.ts:116
msgid "Please choose your handle."
@@ -1496,7 +1506,7 @@ msgstr "パスワードを選択してください。"
#: src/view/com/modals/ChangeEmail.tsx:67
msgid "Please confirm your email before changing it. This is a temporary requirement while email-updating tools are added, and it will soon be removed."
-msgstr "変更する前にメールを確認してください。これは、Eメールアップデートツールが追加されている間の一時的な要件であり、まもなく削除されます。"
+msgstr "変更する前にメールを確認してください。これは、メールアップデートツールが追加されている間の一時的な要件であり、まもなく削除されます。"
#: src/view/com/modals/AddAppPasswords.tsx:140
msgid "Please enter a unique name for this App Password or use our randomly generated one."
@@ -1504,7 +1514,7 @@ msgstr "このアプリパスワードに固有の名前を入力するか、ラ
#: src/view/com/auth/create/state.ts:95
msgid "Please enter your email."
-msgstr "Eメールを入力してください。"
+msgstr "メールアドレスを入力してください。"
#: src/view/com/modals/DeleteAccount.tsx:180
msgid "Please enter your password as well:"
@@ -1512,34 +1522,39 @@ msgstr "パスワードも入力してください:"
#: src/view/com/modals/AppealLabel.tsx:72
#: src/view/com/modals/AppealLabel.tsx:75
-msgid "Please tell us why you think this decision was incorrect."
+msgid "Please tell us why you think this content warning was incorrectly applied!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:331
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+#~ msgid "Please tell us why you think this decision was incorrect."
+#~ msgstr "この判断が誤っていると考える理由を教えてください。"
+
+#: src/view/com/composer/Composer.tsx:337
#: src/view/com/post-thread/PostThread.tsx:226
-#: src/view/screens/PostThread.tsx:78
+#: src/view/screens/PostThread.tsx:80
msgid "Post"
msgstr "投稿"
#: src/view/com/post-thread/PostThread.tsx:385
msgid "Post hidden"
-msgstr "投稿非表示"
+msgstr "投稿を非表示"
#: src/view/com/composer/select-language/SelectLangBtn.tsx:87
msgid "Post language"
-msgstr "ポスト言語"
+msgstr "投稿の言語"
#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:75
msgid "Post Languages"
-msgstr "投稿言語"
+msgstr "投稿の言語"
#: src/view/com/post-thread/PostThread.tsx:437
msgid "Post not found"
-msgstr "投稿が見つからない"
+msgstr "投稿が見つかりません"
#: src/view/screens/Profile.tsx:160
msgid "Posts"
-msgstr ""
+msgstr "投稿"
#: src/view/com/modals/LinkWarning.tsx:44
msgid "Potentially Misleading Link"
@@ -1555,7 +1570,7 @@ msgstr "第一言語"
#: src/view/screens/PreferencesThreads.tsx:91
msgid "Prioritize Your Follows"
-msgstr "フォローの優先順位付け"
+msgstr "あなたのフォローを優先"
#: src/view/shell/desktop/RightNav.tsx:76
msgid "Privacy"
@@ -1569,7 +1584,8 @@ msgstr "プライバシーポリシー"
msgid "Processing..."
msgstr "処理中..."
-#: src/view/shell/bottom-bar/BottomBar.tsx:229
+#: src/view/shell/bottom-bar/BottomBar.tsx:247
+#: src/view/shell/desktop/LeftNav.tsx:412
#: src/view/shell/Drawer.tsx:69
#: src/view/shell/Drawer.tsx:525
#: src/view/shell/Drawer.tsx:526
@@ -1578,24 +1594,24 @@ msgstr "プロフィール"
#: src/view/screens/Settings.tsx:789
msgid "Protect your account by verifying your email."
-msgstr "Eメールを確認してアカウントを保護します。"
+msgstr "メールアドレスを確認してアカウントを保護します。"
#: src/view/screens/ModerationModlists.tsx:61
msgid "Public, shareable lists of users to mute or block in bulk."
-msgstr ""
+msgstr "ユーザーを一括でミュートまたはブロックする、公開された共有可能なリスト。"
#: src/view/screens/Lists.tsx:61
msgid "Public, shareable lists which can drive feeds."
-msgstr "フィードを駆動できるパブリックで共有可能なリスト。"
+msgstr "フィードとして利用できる、公開された共有可能なリスト。"
#: src/view/com/modals/Repost.tsx:52
#: src/view/com/util/post-ctrls/RepostButton.web.tsx:58
msgid "Quote post"
-msgstr "引用投稿"
+msgstr "引用"
#: src/view/com/modals/Repost.tsx:56
msgid "Quote Post"
-msgstr "引用投稿"
+msgstr "引用"
#: src/view/com/modals/EditImage.tsx:236
msgid "Ratios"
@@ -1603,11 +1619,11 @@ msgstr "比率"
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:116
msgid "Recommended Feeds"
-msgstr "推奨フィード"
+msgstr "おすすめのフィード"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:180
msgid "Recommended Users"
-msgstr "推奨ユーザー"
+msgstr "おすすめのユーザー"
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
@@ -1631,7 +1647,7 @@ msgstr "フィードを削除"
#: src/view/com/feeds/FeedSourceCard.tsx:105
#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/screens/ProfileFeed.tsx:275
+#: src/view/screens/ProfileFeed.tsx:270
msgid "Remove from my feeds"
msgstr "マイフィードから削除"
@@ -1645,7 +1661,7 @@ msgstr "イメージプレビューを削除"
#: src/view/com/feeds/FeedSourceCard.tsx:173
msgid "Remove this feed from my feeds?"
-msgstr ""
+msgstr "このフィードをマイフィードから削除しますか?"
#: src/view/com/posts/FeedErrorMessage.tsx:131
msgid "Remove this feed from your saved feeds?"
@@ -1654,53 +1670,53 @@ msgstr "保存したフィードからこのフィードを削除しますか?
#: src/view/com/modals/ListAddRemoveUsers.tsx:199
#: src/view/com/modals/UserAddRemoveLists.tsx:136
msgid "Removed from list"
-msgstr "リストから削除された"
+msgstr "リストから削除されました"
#: src/view/screens/Profile.tsx:161
msgid "Replies"
-msgstr ""
+msgstr "返信"
#: src/view/com/threadgate/WhoCanReply.tsx:98
msgid "Replies to this thread are disabled"
-msgstr ""
+msgstr "このスレッドへの返信はできません"
#: src/view/screens/PreferencesHomeFeed.tsx:135
msgid "Reply Filters"
-msgstr "返信フィルター"
+msgstr "返信のフィルター"
#: src/view/com/modals/report/Modal.tsx:166
msgid "Report {collectionName}"
-msgstr "レポート \\{collectionName}"
+msgstr "{collectionName}を報告"
#: src/view/com/profile/ProfileHeader.tsx:404
msgid "Report Account"
-msgstr "レポートアカウント"
+msgstr "アカウントを報告"
-#: src/view/screens/ProfileFeed.tsx:295
+#: src/view/screens/ProfileFeed.tsx:290
msgid "Report feed"
-msgstr "レポートフィード"
+msgstr "フィードを報告"
-#: src/view/screens/ProfileList.tsx:424
+#: src/view/screens/ProfileList.tsx:425
msgid "Report List"
-msgstr "レポートリスト"
+msgstr "リストを報告"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:165
+#: src/view/com/util/forms/PostDropdownBtn.tsx:167
msgid "Report post"
-msgstr "レポート投稿"
+msgstr "投稿を報告"
#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
msgid "Repost"
-msgstr "再投稿"
+msgstr "リポスト"
#: src/view/com/util/post-ctrls/RepostButton.web.tsx:94
#: src/view/com/util/post-ctrls/RepostButton.web.tsx:105
msgid "Repost or quote post"
-msgstr "再投稿または引用投稿"
+msgstr "リポストまたは引用"
#: src/view/screens/PostRepostedBy.tsx:27
msgid "Reposted by"
-msgstr "再投稿者"
+msgstr "リポストした人"
#: src/view/com/modals/ChangeEmail.tsx:181
#: src/view/com/modals/ChangeEmail.tsx:183
@@ -1717,7 +1733,7 @@ msgstr "コードをリセット"
#: src/view/screens/Settings.tsx:686
msgid "Reset onboarding state"
-msgstr "オンボード状態をリセット"
+msgstr "オンボーディングの状態をリセット"
#: src/view/com/auth/login/ForgotPasswordForm.tsx:98
msgid "Reset password"
@@ -1729,14 +1745,14 @@ msgstr "設定をリセット"
#: src/view/screens/Settings.tsx:684
msgid "Resets the onboarding state"
-msgstr "オンボード状態をリセット"
+msgstr "オンボーディングの状態をリセット"
#: src/view/screens/Settings.tsx:674
msgid "Resets the preferences state"
-msgstr "設定状態をリセット"
+msgstr "設定の状態をリセット"
+#: src/view/com/auth/create/CreateAccount.tsx:163
#: src/view/com/auth/create/CreateAccount.tsx:167
-#: src/view/com/auth/create/CreateAccount.tsx:171
#: src/view/com/auth/login/LoginForm.tsx:258
#: src/view/com/auth/login/LoginForm.tsx:261
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -1772,14 +1788,14 @@ msgstr "画像の切り抜きを保存"
#: src/view/screens/SavedFeeds.tsx:122
msgid "Saved Feeds"
-msgstr "保存済みフィード"
+msgstr "保存されたフィード"
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:64
#: src/view/screens/Search/Search.tsx:401
#: src/view/screens/Search/Search.tsx:567
-#: src/view/shell/bottom-bar/BottomBar.tsx:138
-#: src/view/shell/desktop/LeftNav.tsx:315
+#: src/view/shell/bottom-bar/BottomBar.tsx:159
+#: src/view/shell/desktop/LeftNav.tsx:321
#: src/view/shell/desktop/Search.tsx:161
#: src/view/shell/desktop/Search.tsx:170
#: src/view/shell/Drawer.tsx:343
@@ -1791,12 +1807,16 @@ msgstr "検索"
#~ msgid "Search for posts and users."
#~ msgstr "投稿とユーザーを検索します。"
+#: src/view/com/auth/LoggedOut.tsx:104
+#: src/view/com/auth/LoggedOut.tsx:105
+msgid "Search for users"
+msgstr ""
+
#: src/view/com/modals/ChangeEmail.tsx:110
msgid "Security Step Required"
-msgstr "必要なセキュリティ手順"
+msgstr "必要なセキュリティの手順"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:39
-#: src/view/com/auth/SplashScreen.tsx:29
msgid "See what's next"
msgstr "次を見る"
@@ -1814,11 +1834,11 @@ msgstr "サービスを選択"
#: src/view/screens/LanguageSettings.tsx:281
msgid "Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown."
-msgstr "登録済みフィードに含める言語を選択します。選択されていない場合は、すべての言語が表示されます。"
+msgstr "登録されたフィードに含める言語を選択します。選択されていない場合は、すべての言語が表示されます。"
#: src/view/screens/LanguageSettings.tsx:98
msgid "Select your app language for the default text to display in the app"
-msgstr "アプリに表示するデフォルトのテキストのアプリ言語を選択する"
+msgstr "アプリに表示されるデフォルトのテキストの言語を選択"
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -1826,15 +1846,15 @@ msgstr "フィード内の翻訳に使用する言語を選択します。"
#: src/view/com/modals/VerifyEmail.tsx:196
msgid "Send Confirmation Email"
-msgstr "確認Eメールを送信"
+msgstr "確認のメールを送信"
#: src/view/com/modals/DeleteAccount.tsx:127
msgid "Send email"
-msgstr "Eメールを送信"
+msgstr "メールを送信"
#: src/view/com/modals/DeleteAccount.tsx:138
msgid "Send Email"
-msgstr "Eメールを送信"
+msgstr "メールを送信"
#: src/view/shell/Drawer.tsx:276
#: src/view/shell/Drawer.tsx:297
@@ -1843,7 +1863,7 @@ msgstr "フィードバックを送信"
#: src/view/com/modals/report/SendReportButton.tsx:45
msgid "Send Report"
-msgstr "レポートを送信"
+msgstr "報告を送信"
#: src/view/com/auth/login/SetNewPasswordForm.tsx:78
msgid "Set new password"
@@ -1851,7 +1871,7 @@ msgstr "新しいパスワードを設定"
#: src/view/screens/PreferencesHomeFeed.tsx:216
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
-msgstr "フィードから全ての引用投稿を非表示にするには、この設定を「いいえ」にします。再投稿は引き続き表示されます。"
+msgstr "フィードから全ての引用を非表示にするには、この設定を「いいえ」にします。リポストは引き続き表示されます。"
#: src/view/screens/PreferencesHomeFeed.tsx:113
msgid "Set this setting to \"No\" to hide all replies from your feed."
@@ -1859,7 +1879,7 @@ msgstr "フィードから全ての返信を非表示にするには、この設
#: src/view/screens/PreferencesHomeFeed.tsx:182
msgid "Set this setting to \"No\" to hide all reposts from your feed."
-msgstr "フィードから全ての再投稿を非表示にするには、この設定を「いいえ」にします。"
+msgstr "フィードから全てのリポストを非表示にするには、この設定を「いいえ」にします。"
#: src/view/screens/PreferencesThreads.tsx:116
msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
@@ -1867,10 +1887,10 @@ msgstr "スレッド表示で返信を表示するには、この設定を「は
#: src/view/screens/PreferencesHomeFeed.tsx:252
msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
-msgstr "保存したフィードのサンプルを次のフィードに表示するには、この設定を「はい」にします。これは実験的な機能です。"
+msgstr "保存されたフィードのサンプルを次のフィードに表示するには、この設定を「はい」にします。これは実験的な機能です。"
#: src/view/screens/Settings.tsx:277
-#: src/view/shell/desktop/LeftNav.tsx:426
+#: src/view/shell/desktop/LeftNav.tsx:430
#: src/view/shell/Drawer.tsx:546
#: src/view/shell/Drawer.tsx:547
msgid "Settings"
@@ -1878,15 +1898,15 @@ msgstr "設定"
#: src/view/com/modals/SelfLabel.tsx:125
msgid "Sexual activity or erotic nudity."
-msgstr "性行為またはエロティックなヌード。"
+msgstr "性的行為または性的なヌード。"
#: src/view/com/profile/ProfileHeader.tsx:338
-#: src/view/com/util/forms/PostDropdownBtn.tsx:129
-#: src/view/screens/ProfileList.tsx:383
+#: src/view/com/util/forms/PostDropdownBtn.tsx:131
+#: src/view/screens/ProfileList.tsx:384
msgid "Share"
msgstr "共有"
-#: src/view/screens/ProfileFeed.tsx:307
+#: src/view/screens/ProfileFeed.tsx:302
msgid "Share feed"
msgstr "フィードを共有"
@@ -1905,7 +1925,7 @@ msgstr "マイフィードからの投稿を表示"
#: src/view/screens/PreferencesHomeFeed.tsx:213
msgid "Show Quote Posts"
-msgstr "引用投稿を表示"
+msgstr "引用を表示"
#: src/view/screens/PreferencesHomeFeed.tsx:110
msgid "Show Replies"
@@ -1917,7 +1937,7 @@ msgstr "他のすべての返信の前に、フォローしている人からの
#: src/view/screens/PreferencesHomeFeed.tsx:179
msgid "Show Reposts"
-msgstr "再投稿を表示"
+msgstr "リポストを表示"
#: src/view/com/notifications/FeedItem.tsx:337
msgid "Show users"
@@ -1925,15 +1945,21 @@ msgstr "ユーザーを表示"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:49
+#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/shell/bottom-bar/BottomBar.tsx:285
+#: src/view/shell/bottom-bar/BottomBar.tsx:286
+#: src/view/shell/bottom-bar/BottomBar.tsx:288
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:177
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:178
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:180
#: src/view/shell/NavSignupCard.tsx:58
#: src/view/shell/NavSignupCard.tsx:59
msgid "Sign in"
msgstr "サインイン"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
-#: src/view/com/auth/SplashScreen.tsx:52
-#: src/view/com/auth/SplashScreen.web.tsx:84
+#: src/view/com/auth/SplashScreen.tsx:57
+#: src/view/com/auth/SplashScreen.web.tsx:87
msgid "Sign In"
msgstr "サインイン"
@@ -1944,7 +1970,7 @@ msgstr "{0}としてサインイン"
#: src/view/com/auth/login/ChooseAccountForm.tsx:118
#: src/view/com/auth/login/Login.tsx:116
msgid "Sign in as..."
-msgstr "...としてサインイン"
+msgstr "アカウントの選択"
#: src/view/com/auth/login/LoginForm.tsx:130
msgid "Sign into"
@@ -1955,6 +1981,12 @@ msgstr "サインイン"
msgid "Sign out"
msgstr "サインアウト"
+#: src/view/shell/bottom-bar/BottomBar.tsx:275
+#: src/view/shell/bottom-bar/BottomBar.tsx:276
+#: src/view/shell/bottom-bar/BottomBar.tsx:278
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:167
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:168
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:170
#: src/view/shell/NavSignupCard.tsx:49
#: src/view/shell/NavSignupCard.tsx:50
#: src/view/shell/NavSignupCard.tsx:52
@@ -1963,11 +1995,11 @@ msgstr "サインアップ"
#: src/view/shell/NavSignupCard.tsx:42
msgid "Sign up or sign in to join the conversation"
-msgstr "登録またはログインして会話に参加する"
+msgstr "登録またはログインして会話に参加"
#: src/view/com/util/moderation/ScreenHider.tsx:76
msgid "Sign-in Required"
-msgstr ""
+msgstr "サインインが必要"
#: src/view/screens/Settings.tsx:327
msgid "Signed in as"
@@ -2004,19 +2036,19 @@ msgstr "ストーリーブック"
#: src/view/com/modals/AppealLabel.tsx:101
msgid "Submit"
-msgstr ""
+msgstr "送信"
-#: src/view/screens/ProfileList.tsx:573
+#: src/view/screens/ProfileList.tsx:574
msgid "Subscribe"
msgstr "登録"
-#: src/view/screens/ProfileList.tsx:569
+#: src/view/screens/ProfileList.tsx:570
msgid "Subscribe to this list"
msgstr "このリストに登録"
#: src/view/screens/Search/Search.tsx:357
msgid "Suggested Follows"
-msgstr "推奨されるフォロー"
+msgstr "おすすめのフォロー"
#: src/view/screens/Support.tsx:30
#: src/view/screens/Support.tsx:33
@@ -2046,19 +2078,19 @@ msgstr "利用規約"
#: src/view/com/modals/AppealLabel.tsx:70
#: src/view/com/modals/report/InputIssueDetails.tsx:50
msgid "Text input field"
-msgstr "テキスト入力フィールド"
+msgstr "テキストの入力フィールド"
#: src/view/com/profile/ProfileHeader.tsx:306
msgid "The account will be able to interact with you after unblocking."
-msgstr "このアカウントは、ブロック解除後にお客様とやり取りすることができます。"
+msgstr "このアカウントは、ブロック解除後にあなたとやり取りすることができます。"
#: src/view/screens/CommunityGuidelines.tsx:36
msgid "The Community Guidelines have been moved to <0/>"
-msgstr "コミュニティ ガイドラインが<0/>に移動された"
+msgstr "コミュニティガイドラインは<0/>に移動されました"
#: src/view/screens/CopyrightPolicy.tsx:33
msgid "The Copyright Policy has been moved to <0/>"
-msgstr "著作権ポリシーが<0/>に移動された"
+msgstr "著作権ポリシーが<0/>に移動されました"
#: src/view/com/post-thread/PostThread.tsx:440
msgid "The post may have been deleted."
@@ -2066,39 +2098,39 @@ msgstr "投稿が削除された可能性があります。"
#: src/view/screens/PrivacyPolicy.tsx:33
msgid "The Privacy Policy has been moved to <0/>"
-msgstr "プライバシーポリシーが<0/>に移動された"
+msgstr "プライバシーポリシーが<0/>に移動されました"
#: src/view/screens/Support.tsx:36
msgid "The support form has been moved. If you need help, please<0/> or visit {HELP_DESK_URL} to get in touch with us."
-msgstr "サポートフォームが移動しました。サポートが必要な場合は、<0/>または\\{HELP_DESK_URL}にアクセスしてご連絡ください。"
+msgstr "サポートフォームが移動しました。サポートが必要な場合は、<0/>または{HELP_DESK_URL}にアクセスしてご連絡ください。"
#: src/view/screens/TermsOfService.tsx:33
msgid "The Terms of Service have been moved to"
-msgstr "サービス規約が移動された"
+msgstr "サービス規約が移動されました"
#: src/view/com/util/ErrorBoundary.tsx:35
msgid "There was an unexpected issue in the application. Please let us know if this happened to you!"
msgstr "アプリケーションに予期しない問題が発生しました。このようなことがありましたらお知らせください!"
#: src/view/com/util/moderation/LabelInfo.tsx:45
-msgid "This {0} has been labeled."
-msgstr ""
+#~ msgid "This {0} has been labeled."
+#~ msgstr "この{0}にはラベルが貼られています"
#: src/view/com/util/moderation/ScreenHider.tsx:88
msgid "This {screenDescription} has been flagged:"
-msgstr "この\\{screenDescription}にはフラグが設定されています。"
+msgstr "この{screenDescription}にはフラグが設定されています:"
#: src/view/com/util/moderation/ScreenHider.tsx:83
msgid "This account has requested that users sign in to view their profile."
-msgstr ""
+msgstr "このアカウントを閲覧するためにはサインインが必要です。"
#: src/view/com/posts/FeedErrorMessage.tsx:107
msgid "This content is not viewable without a Bluesky account."
-msgstr ""
+msgstr "このコンテンツはBlueskyのアカウントがないと閲覧できません。"
#: src/view/com/posts/FeedErrorMessage.tsx:113
msgid "This feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
-msgstr ""
+msgstr "現在このフィードにはアクセスが集中しており、一時的にご利用いただけません。時間をおいてもう一度お試しください。"
#: src/view/com/modals/BirthDateSettings.tsx:61
msgid "This information is not shared with other users."
@@ -2106,7 +2138,7 @@ msgstr "この情報は他のユーザーと共有されません。"
#: src/view/com/modals/VerifyEmail.tsx:113
msgid "This is important in case you ever need to change your email or reset your password."
-msgstr "これは、Eメールの変更やパスワードのリセットが必要な場合に重要です。"
+msgstr "これは、メールアドレスの変更やパスワードのリセットが必要な場合に重要です。"
#: src/view/com/auth/create/Step1.tsx:55
msgid "This is the service that keeps you online."
@@ -2116,7 +2148,7 @@ msgstr "これはオンラインを維持するためのサービスです。"
msgid "This link is taking you to the following website:"
msgstr "このリンクは次のウェブサイトへリンクしています:"
-#: src/view/com/post-thread/PostThreadItem.tsx:124
+#: src/view/com/post-thread/PostThreadItem.tsx:123
msgid "This post has been deleted."
msgstr "この投稿は削除されました。"
@@ -2135,15 +2167,15 @@ msgstr "スレッドモード"
#: src/view/com/util/forms/DropdownButton.tsx:230
msgid "Toggle dropdown"
-msgstr "トグルドロップダウン"
+msgstr "ドロップダウンをトグル"
#: src/view/com/modals/EditImage.tsx:271
msgid "Transformations"
msgstr "変換"
+#: src/view/com/post-thread/PostThreadItem.tsx:704
#: src/view/com/post-thread/PostThreadItem.tsx:706
-#: src/view/com/post-thread/PostThreadItem.tsx:708
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:103
msgid "Translate"
msgstr "翻訳"
@@ -2151,33 +2183,33 @@ msgstr "翻訳"
msgid "Try again"
msgstr "再試行"
-#: src/view/screens/ProfileList.tsx:471
+#: src/view/screens/ProfileList.tsx:472
msgid "Un-block list"
-msgstr ""
+msgstr "リストでのブロックを解除"
-#: src/view/screens/ProfileList.tsx:456
+#: src/view/screens/ProfileList.tsx:457
msgid "Un-mute list"
-msgstr ""
+msgstr "リストでのミュートを解除"
#: src/view/com/auth/create/CreateAccount.tsx:64
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:117
msgid "Unable to contact your service. Please check your Internet connection."
-msgstr "サービスに接続できません。インターネット接続を確認してください。"
+msgstr "あなたのサービスに接続できません。インターネットの接続を確認してください。"
#: src/view/com/profile/ProfileHeader.tsx:466
#: src/view/com/profile/ProfileHeader.tsx:469
msgid "Unblock"
-msgstr "ブロック解除"
+msgstr "ブロックを解除"
#: src/view/com/profile/ProfileHeader.tsx:304
#: src/view/com/profile/ProfileHeader.tsx:388
msgid "Unblock Account"
-msgstr "アカウントのブロック解除"
+msgstr "アカウントのブロックを解除"
#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
msgid "Undo repost"
-msgstr "再投稿を元に戻す"
+msgstr "リポストを元に戻す"
#: src/view/com/auth/create/state.ts:210
msgid "Unfortunately, you do not meet the requirements to create an account."
@@ -2185,19 +2217,19 @@ msgstr "残念ながら、アカウントを作成するための要件を満た
#: src/view/com/profile/ProfileHeader.tsx:369
msgid "Unmute Account"
-msgstr "アカウントのミュート解除"
+msgstr "アカウントのミュートを解除"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:147
+#: src/view/com/util/forms/PostDropdownBtn.tsx:149
msgid "Unmute thread"
-msgstr "スレッドのミュート解除"
+msgstr "スレッドのミュートを解除"
-#: src/view/screens/ProfileList.tsx:439
+#: src/view/screens/ProfileList.tsx:440
msgid "Unpin moderation list"
-msgstr ""
+msgstr "モデレーションリストのピン留めを解除"
#: src/view/com/modals/UserAddRemoveLists.tsx:54
msgid "Update {displayName} in Lists"
-msgstr "リストの\\{displayName}を更新"
+msgstr "リストの{displayName}を更新"
#: src/lib/hooks/useOTAUpdate.ts:15
msgid "Update Available"
@@ -2238,36 +2270,36 @@ msgstr "ユーザーリスト"
#: src/view/com/auth/login/LoginForm.tsx:170
#: src/view/com/auth/login/LoginForm.tsx:187
msgid "Username or email address"
-msgstr "ユーザー名またはEメールアドレス"
+msgstr "ユーザー名またはメールアドレス"
-#: src/view/screens/ProfileList.tsx:737
+#: src/view/screens/ProfileList.tsx:738
msgid "Users"
msgstr "ユーザー"
#: src/view/com/threadgate/WhoCanReply.tsx:143
msgid "users followed by <0/>"
-msgstr ""
+msgstr "<0/>にフォローされているユーザー"
#: src/view/com/modals/Threadgate.tsx:106
msgid "Users in \"{0}\""
-msgstr ""
+msgstr "{0}のユーザー"
#: src/view/screens/Settings.tsx:750
msgid "Verify email"
-msgstr "Eメールを確認"
+msgstr "メールアドレスを確認"
#: src/view/screens/Settings.tsx:775
msgid "Verify my email"
-msgstr "Eメールを確認"
+msgstr "メールアドレスを確認"
#: src/view/screens/Settings.tsx:784
msgid "Verify My Email"
-msgstr "Eメールを確認"
+msgstr "メールアドレスを確認"
#: src/view/com/modals/ChangeEmail.tsx:205
#: src/view/com/modals/ChangeEmail.tsx:207
msgid "Verify New Email"
-msgstr "新しいEメールを確認"
+msgstr "新しいメールアドレスを確認"
#: src/view/screens/Log.tsx:52
msgid "View debug entry"
@@ -2281,17 +2313,17 @@ msgstr "アバターを表示"
msgid "Visit Site"
msgstr "サイトへアクセス"
-#: src/view/com/auth/create/CreateAccount.tsx:125
+#: src/view/com/auth/create/CreateAccount.tsx:121
msgid "We're so excited to have you join us!"
-msgstr "あなたが参加してくれることをとても楽しみにしています!"
+msgstr "私たちはあなたが参加してくれることをとても楽しみにしています!"
#: src/view/screens/Search/Search.tsx:238
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
-msgstr "申し訳ありませんが、検索を完了できませんでした。数分後に再試行してください。"
+msgstr "大変申し訳ありませんが、検索を完了できませんでした。数分後に再試行してください。"
#: src/view/screens/NotFound.tsx:48
msgid "We're sorry! We can't find the page you were looking for."
-msgstr "申し訳ありません! お探しのページが見つかりません。"
+msgstr "大変申し訳ありません!お探しのページが見つかりません。"
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:46
msgid "Welcome to <0>Bluesky0>"
@@ -2299,7 +2331,11 @@ msgstr "<0>Bluesky0>へようこそ"
#: src/view/com/modals/report/Modal.tsx:169
msgid "What is the issue with this {collectionName}?"
-msgstr "この\\{collectionName}の問題は何ですか?"
+msgstr "この{collectionName}の問題は何ですか?"
+
+#: src/view/com/auth/SplashScreen.tsx:34
+msgid "What's up?"
+msgstr "最近どう?"
#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78
msgid "Which languages are used in this post?"
@@ -2307,18 +2343,18 @@ msgstr "この投稿ではどの言語が使われていますか?"
#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:77
msgid "Which languages would you like to see in your algorithmic feeds?"
-msgstr "アルゴリズムフィードに表示する言語を選択しますか?"
+msgstr "アルゴリズムによるフィードにはどの言語を使用しますか?"
#: src/view/com/composer/threadgate/ThreadgateBtn.tsx:47
#: src/view/com/modals/Threadgate.tsx:66
msgid "Who can reply"
-msgstr ""
+msgstr "返信できる人"
#: src/view/com/modals/crop-image/CropImage.web.tsx:102
msgid "Wide"
msgstr "ワイド"
-#: src/view/com/composer/Composer.tsx:403
+#: src/view/com/composer/Composer.tsx:409
msgid "Write post"
msgstr "投稿を書く"
@@ -2347,7 +2383,7 @@ msgstr "まだ招待コードがありません!Blueskyをもうしばらく
#: src/view/screens/SavedFeeds.tsx:102
msgid "You don't have any pinned feeds."
-msgstr "ピンで固定されたフィードがありません。"
+msgstr "ピン留めされたフィードがありません。"
#: src/view/screens/Feeds.tsx:383
msgid "You don't have any saved feeds!"
@@ -2359,11 +2395,11 @@ msgstr "保存されたフィードがありません。"
#: src/view/com/post-thread/PostThread.tsx:388
msgid "You have blocked the author or you have been blocked by the author."
-msgstr "著者をブロックしたか、または著者によってブロックされました。"
+msgstr "あなたが著者をブロックしているか、または著者によってあなたはブロックされています。"
#: src/view/com/feeds/ProfileFeedgens.tsx:141
msgid "You have no feeds."
-msgstr ""
+msgstr "フィードがありません。"
#: src/view/com/lists/MyLists.tsx:89
#: src/view/com/lists/ProfileLists.tsx:145
@@ -2372,11 +2408,11 @@ msgstr "リストがありません。"
#: src/view/screens/ModerationBlockedAccounts.tsx:131
msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
-msgstr "ブロックしているアカウントはまだありません。アカウントをブロックするには、ユーザーのプロフィールに移動し、アカウントメニューから「アカウントをブロック」を選択します。"
+msgstr "ブロック中のアカウントはまだありません。アカウントをブロックするには、ユーザーのプロフィールに移動し、アカウントメニューから「アカウントをブロック」を選択します。"
#: src/view/screens/AppPasswords.tsx:86
msgid "You have not created any app passwords yet. You can create one by pressing the button below."
-msgstr "アプリパスワードはまだ作成されていません。 下のボタンを押すと作成できます。"
+msgstr "アプリパスワードはまだ作成されていません。下のボタンを押すと作成できます。"
#: src/view/screens/ModerationMutedAccounts.tsx:130
msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
@@ -2384,11 +2420,11 @@ msgstr "ミュートしているアカウントはまだありません。アカ
#: src/view/com/auth/login/SetNewPasswordForm.tsx:81
msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
-msgstr "「リセットコード」が記載されたEメールが届きます。ここにコードを入力し、新しいパスワードを入力します。"
+msgstr "「リセットコード」が記載されたメールが届きます。ここにコードを入力し、新しいパスワードを入力します。"
#: src/view/com/auth/create/Step2.tsx:43
msgid "Your account"
-msgstr "アカウント"
+msgstr "あなたのアカウント"
#: src/view/com/auth/create/Step2.tsx:122
msgid "Your birth date"
@@ -2396,19 +2432,19 @@ msgstr "生年月日"
#: src/view/com/auth/create/state.ts:102
msgid "Your email appears to be invalid."
-msgstr "Eメールが無効なようです。"
+msgstr "メールアドレスが無効なようです。"
#: src/view/com/modals/Waitlist.tsx:107
msgid "Your email has been saved! We'll be in touch soon."
-msgstr "Eメールが保存されました!すぐにご連絡いたします。"
+msgstr "メールアドレスが保存されました!すぐにご連絡いたします。"
#: src/view/com/modals/ChangeEmail.tsx:125
msgid "Your email has been updated but not verified. As a next step, please verify your new email."
-msgstr "Eメールは更新されましたが、確認されていません。次のステップとして、新しいEメールを確認してください。"
+msgstr "メールアドレスは更新されましたが、確認されていません。次のステップとして、新しいEメールを確認してください。"
#: src/view/com/modals/VerifyEmail.tsx:108
msgid "Your email has not yet been verified. This is an important security step which we recommend."
-msgstr "Eメールはまだ確認されていません。これは、当社が推奨する重要なセキュリティステップです。"
+msgstr "メールアドレスはまだ確認されていません。これは、当社が推奨する重要なセキュリティステップです。"
#: src/view/com/auth/create/Step3.tsx:42
#: src/view/com/modals/ChangeHandle.tsx:270
@@ -2423,20 +2459,20 @@ msgstr "ホスティングプロバイダー"
#: src/view/shell/desktop/RightNav.tsx:129
#: src/view/shell/Drawer.tsx:636
msgid "Your invite codes are hidden when logged in using an App Password"
-msgstr ""
+msgstr "アプリパスワードを使用してログインすると、招待コードは非表示になります。"
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59
msgid "Your posts, likes, and blocks are public. Mutes are private."
-msgstr "投稿、いいね、ブロックは公開されます。ミュートはプライベートです。"
+msgstr "投稿、いいね、ブロックは公開されます。ミュートは非公開です。"
#: src/view/com/modals/SwitchAccount.tsx:82
msgid "Your profile"
-msgstr "プロフィール"
+msgstr "あなたのプロフィール"
#: src/view/screens/Moderation.tsx:220
#~ msgid "Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in."
-#~ msgstr ""
+#~ msgstr "あなたのプロフィールと投稿は、アカウントを持っておらずログインしていない状態でBlueskyのアプリまたはウェブサイトを訪問する人々には表示されません。"
#: src/view/com/auth/create/Step3.tsx:28
msgid "Your user handle"
-msgstr "ユーザーハンドル"
+msgstr "あなたのユーザーハンドル"
diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts
index e431643e71..c87e95f030 100644
--- a/src/state/queries/feed.ts
+++ b/src/state/queries/feed.ts
@@ -161,51 +161,6 @@ export function useFeedSourceInfoQuery({uri}: {uri: string}) {
})
}
-export const isFeedPublicQueryKey = ({uri}: {uri: string}) => [
- 'isFeedPublic',
- uri,
-]
-
-export function useIsFeedPublicQuery({uri}: {uri: string}) {
- return useQuery({
- queryKey: isFeedPublicQueryKey({uri}),
- queryFn: async ({queryKey}) => {
- const [, uri] = queryKey
- try {
- const res = await getAgent().app.bsky.feed.getFeed({
- feed: uri,
- limit: 1,
- })
- return {
- isPublic: Boolean(res.data.feed),
- error: undefined,
- }
- } catch (e: any) {
- /**
- * This should be an `XRPCError`, but I can't safely import from
- * `@atproto/xrpc` due to a depdency on node's `crypto` module.
- *
- * @see https://github.com/bluesky-social/atproto/blob/c17971a2d8e424cc7f10c071d97c07c08aa319cf/packages/xrpc/src/client.ts#L126
- */
- if (e?.status === 401) {
- return {
- isPublic: false,
- error: e,
- }
- }
-
- /*
- * Non-401 response means something else went wrong on the server
- */
- return {
- isPublic: true,
- error: e,
- }
- }
- },
- })
-}
-
export const useGetPopularFeedsQueryKey = ['getPopularFeeds']
export function useGetPopularFeedsQuery() {
@@ -294,6 +249,7 @@ export function usePinnedFeedsInfos(): {
// these requests can fail, need to filter those out
try {
return await queryClient.fetchQuery({
+ staleTime: STALE.SECONDS.FIFTEEN,
queryKey: feedSourceInfoQueryKey({uri}),
queryFn: async () => {
const type = getFeedTypeFromUri(uri)
diff --git a/src/state/queries/notifications/feed.ts b/src/state/queries/notifications/feed.ts
index dc206df79a..d652f493df 100644
--- a/src/state/queries/notifications/feed.ts
+++ b/src/state/queries/notifications/feed.ts
@@ -16,7 +16,7 @@
* 3. Don't call this query's `refetch()` if you're trying to sync latest; call `checkUnread()` instead.
*/
-import {useEffect} from 'react'
+import {useEffect, useRef} from 'react'
import {AppBskyFeedDefs} from '@atproto/api'
import {
useInfiniteQuery,
@@ -49,6 +49,7 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) {
const threadMutes = useMutedThreads()
const unreads = useUnreadNotificationsApi()
const enabled = opts?.enabled !== false
+ const lastPageCountRef = useRef(0)
const query = useInfiniteQuery<
FeedPage,
@@ -104,24 +105,26 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) {
useEffect(() => {
const {isFetching, hasNextPage, data} = query
-
- let count = 0
- let numEmpties = 0
- for (const page of data?.pages || []) {
- if (!page.items.length) {
- numEmpties++
- }
- count += page.items.length
+ if (isFetching || !hasNextPage) {
+ return
}
+ // avoid double-fires of fetchNextPage()
if (
- !isFetching &&
- hasNextPage &&
- count < PAGE_SIZE &&
- numEmpties < 3 &&
- (data?.pages.length || 0) < 6
+ lastPageCountRef.current !== 0 &&
+ lastPageCountRef.current === data?.pages?.length
) {
+ return
+ }
+
+ // fetch next page if we haven't gotten a full page of content
+ let count = 0
+ for (const page of data?.pages || []) {
+ count += page.items.length
+ }
+ if (count < PAGE_SIZE && (data?.pages.length || 0) < 6) {
query.fetchNextPage()
+ lastPageCountRef.current = data?.pages?.length || 0
}
}, [query])
diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts
index 423de4ae87..b91af372f0 100644
--- a/src/state/queries/post-feed.ts
+++ b/src/state/queries/post-feed.ts
@@ -1,4 +1,4 @@
-import React, {useCallback, useEffect} from 'react'
+import React, {useCallback, useEffect, useRef} from 'react'
import {
AppBskyFeedDefs,
AppBskyFeedPost,
@@ -78,6 +78,7 @@ export interface FeedPageUnselected {
api: FeedAPI
cursor: string | undefined
feed: AppBskyFeedDefs.FeedViewPost[]
+ fetchedAt: number
}
export interface FeedPage {
@@ -85,6 +86,7 @@ export interface FeedPage {
tuner: FeedTuner | NoopFeedTuner
cursor: string | undefined
slices: FeedPostSlice[]
+ fetchedAt: number
}
const PAGE_SIZE = 30
@@ -98,11 +100,12 @@ export function usePostFeedQuery(
const feedTuners = useFeedTuners(feedDesc)
const moderationOpts = useModerationOpts()
const enabled = opts?.enabled !== false && Boolean(moderationOpts)
- const lastRun = React.useRef<{
+ const lastRun = useRef<{
data: InfiniteData
args: typeof selectArgs
result: InfiniteData
} | null>(null)
+ const lastPageCountRef = useRef(0)
// Make sure this doesn't invalidate unless really needed.
const selectArgs = React.useMemo(
@@ -152,6 +155,7 @@ export function usePostFeedQuery(
api,
cursor: res.cursor,
feed: res.feed,
+ fetchedAt: Date.now(),
}
},
initialPageParam: undefined,
@@ -214,6 +218,7 @@ export function usePostFeedQuery(
api: page.api,
tuner,
cursor: page.cursor,
+ fetchedAt: page.fetchedAt,
slices: tuner
.tune(page.feed)
.map(slice => {
@@ -279,26 +284,28 @@ export function usePostFeedQuery(
useEffect(() => {
const {isFetching, hasNextPage, data} = query
+ if (isFetching || !hasNextPage) {
+ return
+ }
+ // avoid double-fires of fetchNextPage()
+ if (
+ lastPageCountRef.current !== 0 &&
+ lastPageCountRef.current === data?.pages?.length
+ ) {
+ return
+ }
+
+ // fetch next page if we haven't gotten a full page of content
let count = 0
- let numEmpties = 0
for (const page of data?.pages || []) {
- if (page.slices.length === 0) {
- numEmpties++
- }
for (const slice of page.slices) {
count += slice.items.length
}
}
-
- if (
- !isFetching &&
- hasNextPage &&
- count < PAGE_SIZE &&
- numEmpties < 3 &&
- (data?.pages.length || 0) < 6
- ) {
+ if (count < PAGE_SIZE && (data?.pages.length || 0) < 6) {
query.fetchNextPage()
+ lastPageCountRef.current = data?.pages?.length || 0
}
}, [query])
diff --git a/src/state/queries/profile.ts b/src/state/queries/profile.ts
index 5fd0b4e344..40ba0653c1 100644
--- a/src/state/queries/profile.ts
+++ b/src/state/queries/profile.ts
@@ -35,9 +35,7 @@ export function useProfileQuery({did}: {did: string | undefined}) {
// if you remove it, the UI infinite-loops
// -prf
staleTime: isCurrentAccount ? STALE.SECONDS.THIRTY : STALE.MINUTES.FIVE,
- refetchInterval: isCurrentAccount
- ? STALE.SECONDS.THIRTY
- : STALE.MINUTES.FIVE,
+ refetchInterval: STALE.MINUTES.FIVE,
queryKey: RQKEY(did || ''),
queryFn: async () => {
const res = await getAgent().getProfile({actor: did || ''})
diff --git a/src/state/session/index.tsx b/src/state/session/index.tsx
index 7cdbe6bb80..aa8c94ebcd 100644
--- a/src/state/session/index.tsx
+++ b/src/state/session/index.tsx
@@ -189,6 +189,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
},
logger.DebugContext.session,
)
+ track('Try Create Account')
const agent = new BskyAgent({service})
@@ -231,6 +232,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
},
logger.DebugContext.session,
)
+ track('Create Account')
},
[upsertAccount, queryClient],
)
diff --git a/src/view/com/auth/LoggedOut.tsx b/src/view/com/auth/LoggedOut.tsx
index b0b2bf7edc..c0427ff542 100644
--- a/src/view/com/auth/LoggedOut.tsx
+++ b/src/view/com/auth/LoggedOut.tsx
@@ -3,8 +3,9 @@ import {View, Pressable} from 'react-native'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {useLingui} from '@lingui/react'
import {msg} from '@lingui/macro'
+import {useNavigation} from '@react-navigation/native'
-import {isIOS} from 'platform/detection'
+import {isIOS, isNative} from 'platform/detection'
import {Login} from 'view/com/auth/login/Login'
import {CreateAccount} from 'view/com/auth/create/CreateAccount'
import {ErrorBoundary} from 'view/com/util/ErrorBoundary'
@@ -18,6 +19,9 @@ import {
useLoggedOutView,
useLoggedOutViewControls,
} from '#/state/shell/logged-out'
+import {useSession} from '#/state/session'
+import {Text} from '#/view/com/util/text/Text'
+import {NavigationProp} from 'lib/routes/types'
enum ScreenState {
S_LoginOrCreateAccount,
@@ -26,6 +30,7 @@ enum ScreenState {
}
export function LoggedOut({onDismiss}: {onDismiss?: () => void}) {
+ const {hasSession} = useSession()
const {_} = useLingui()
const pal = usePalette('default')
const setMinimalShellMode = useSetMinimalShellMode()
@@ -40,6 +45,8 @@ export function LoggedOut({onDismiss}: {onDismiss?: () => void}) {
)
const {isMobile} = useWebMediaQueries()
const {clearRequestedAccount} = useLoggedOutViewControls()
+ const navigation = useNavigation()
+ const isFirstScreen = screenState === ScreenState.S_LoginOrCreateAccount
React.useEffect(() => {
screen('Login')
@@ -53,6 +60,10 @@ export function LoggedOut({onDismiss}: {onDismiss?: () => void}) {
clearRequestedAccount()
}, [clearRequestedAccount, onDismiss])
+ const onPressSearch = React.useCallback(() => {
+ navigation.navigate(`SearchTab`)
+ }, [navigation])
+
return (
void}) {
},
]}>
- {onDismiss && (
+ {onDismiss ? (
void}) {
}}
/>
- )}
+ ) : isNative && !hasSession && isFirstScreen ? (
+
+
+ Search{' '}
+
+
+
+ ) : null}
{screenState === ScreenState.S_LoginOrCreateAccount ? (
-
+
- What's next?
+ What's up?
diff --git a/src/view/com/auth/SplashScreen.web.tsx b/src/view/com/auth/SplashScreen.web.tsx
index 4e942f66e3..1cc7b9146d 100644
--- a/src/view/com/auth/SplashScreen.web.tsx
+++ b/src/view/com/auth/SplashScreen.web.tsx
@@ -63,7 +63,7 @@ export const SplashScreen = ({
-
+
diff --git a/src/view/com/auth/create/CreateAccount.tsx b/src/view/com/auth/create/CreateAccount.tsx
index ab6d34584a..a89e6fb34a 100644
--- a/src/view/com/auth/create/CreateAccount.tsx
+++ b/src/view/com/auth/create/CreateAccount.tsx
@@ -30,7 +30,7 @@ import {Step2} from './Step2'
import {Step3} from './Step3'
export function CreateAccount({onPressBack}: {onPressBack: () => void}) {
- const {track, screen} = useAnalytics()
+ const {screen} = useAnalytics()
const pal = usePalette('default')
const {_} = useLingui()
const [uiState, uiDispatch] = useCreateAccount()
@@ -93,21 +93,17 @@ export function CreateAccount({onPressBack}: {onPressBack: () => void}) {
uiDispatch,
_,
})
- track('Create Account')
setBirthDate({birthDate: uiState.birthDate})
if (IS_PROD(uiState.serviceUrl)) {
setSavedFeeds(DEFAULT_PROD_FEEDS)
}
} catch {
// dont need to handle here
- } finally {
- track('Try Create Account')
}
}
}, [
uiState,
uiDispatch,
- track,
onboardingDispatch,
createAccount,
setBirthDate,
diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx
index f510be0be5..c4453e0c3e 100644
--- a/src/view/com/composer/Composer.tsx
+++ b/src/view/com/composer/Composer.tsx
@@ -62,6 +62,7 @@ import {useProfileQuery} from '#/state/queries/profile'
import {useComposerControls} from '#/state/shell/composer'
import {emitPostCreated} from '#/state/events'
import {ThreadgateSetting} from '#/state/queries/threadgate'
+import {logger} from '#/logger'
type Props = ComposerOpts
export const ComposePost = observer(function ComposePost({
@@ -228,6 +229,11 @@ export const ComposePost = observer(function ComposePost({
})
).uri
} catch (e: any) {
+ logger.error(e, {
+ message: `Composer: create post failed`,
+ hasImages: gallery.size > 0,
+ })
+
if (extLink) {
setExtLink({
...extLink,
diff --git a/src/view/com/composer/text-input/TextInput.tsx b/src/view/com/composer/text-input/TextInput.tsx
index 13fe3a0b31..7e39f6aedf 100644
--- a/src/view/com/composer/text-input/TextInput.tsx
+++ b/src/view/com/composer/text-input/TextInput.tsx
@@ -215,7 +215,13 @@ export const TextInput = forwardRef(function TextInputImpl(
autoFocus={true}
allowFontScaling
multiline
- style={[pal.text, styles.textInput, styles.textInputFormatting]}
+ numberOfLines={4}
+ style={[
+ pal.text,
+ styles.textInput,
+ styles.textInputFormatting,
+ {textAlignVertical: 'top'},
+ ]}
{...props}>
{textDecorated}
diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx
index 9c92a0dd5f..84d49e3b09 100644
--- a/src/view/com/feeds/FeedPage.tsx
+++ b/src/view/com/feeds/FeedPage.tsx
@@ -29,7 +29,7 @@ import {truncateAndInvalidate} from '#/state/queries/util'
import {TabState, getTabState, getRootNavigation} from '#/lib/routes/helpers'
import {isNative} from '#/platform/detection'
-const POLL_FREQ = 30e3 // 30sec
+const POLL_FREQ = 60e3 // 60sec
export function FeedPage({
testID,
diff --git a/src/view/com/modals/AppealLabel.tsx b/src/view/com/modals/AppealLabel.tsx
index 2db070bc63..edc6f4cd01 100644
--- a/src/view/com/modals/AppealLabel.tsx
+++ b/src/view/com/modals/AppealLabel.tsx
@@ -62,17 +62,17 @@ export function Component(props: ReportComponentProps) {
- Appeal Decision
+ Appeal Content Warning
{
if (isModalActive) {
- bottomSheetRef.current?.expand()
+ bottomSheetRef.current?.snapToIndex(0)
} else {
bottomSheetRef.current?.close()
}
diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx
index 8d12117071..2ff8030714 100644
--- a/src/view/com/post-thread/PostThreadItem.tsx
+++ b/src/view/com/post-thread/PostThreadItem.tsx
@@ -42,7 +42,6 @@ import {useComposerControls} from '#/state/shell/composer'
import {useModerationOpts} from '#/state/queries/preferences'
import {Shadow, usePostShadow, POST_TOMBSTONE} from '#/state/cache/post-shadow'
import {ThreadPost} from '#/state/queries/post-thread'
-import {LabelInfo} from '../util/moderation/LabelInfo'
import {useSession} from '#/state/session'
import {WhoCanReply} from '../threadgate/WhoCanReply'
@@ -187,6 +186,9 @@ let PostThreadItemLoaded = ({
return makeProfileLink(post.author, 'post', urip.rkey, 'reposted-by')
}, [post.uri, post.author])
const repostsTitle = 'Reposts of this post'
+ const isSelfLabeledPost =
+ moderation.decisions.post.cause?.type === 'label' &&
+ moderation.decisions.post.cause.label.src === currentAccount?.did
const translatorUrl = getTranslatorLink(
record?.text || '',
@@ -332,6 +334,9 @@ let PostThreadItemLoaded = ({
postCid={post.cid}
postUri={post.uri}
record={record}
+ showAppealLabelItem={
+ post.author.did === currentAccount?.did && !isSelfLabeledPost
+ }
style={{
paddingVertical: 6,
paddingHorizontal: 10,
@@ -351,13 +356,6 @@ let PostThreadItemLoaded = ({
includeMute
style={styles.alert}
/>
- {post.author.did === currentAccount?.did ? (
-
- ) : null}
{richText?.text ? (
void) | null>(null)
+ const lastFetchRef = React.useRef(Date.now())
const opts = React.useMemo(
() => ({enabled, ignoreFilterFor}),
@@ -91,6 +96,9 @@ let Feed = ({
fetchNextPage,
} = usePostFeedQuery(feed, feedParams, opts)
const isEmpty = !isFetching && !data?.pages[0]?.slices.length
+ if (data?.pages[0]) {
+ lastFetchRef.current = data?.pages[0].fetchedAt
+ }
const checkForNew = React.useCallback(async () => {
if (!data?.pages[0] || isFetching || !onHasNew || !enabled) {
@@ -130,11 +138,21 @@ let Feed = ({
checkForNewRef.current = checkForNew
}, [checkForNew])
React.useEffect(() => {
- if (enabled && checkForNewRef.current) {
- // check for new on enable (aka on focus)
- checkForNewRef.current()
+ if (enabled) {
+ const timeSinceFirstLoad = Date.now() - lastFetchRef.current
+ if (timeSinceFirstLoad > REFRESH_AFTER) {
+ // do a full refresh
+ scrollElRef?.current?.scrollToOffset({offset: 0, animated: false})
+ queryClient.resetQueries({queryKey: RQKEY(feed)})
+ } else if (
+ timeSinceFirstLoad > CHECK_LATEST_AFTER &&
+ checkForNewRef.current
+ ) {
+ // check for new on enable (aka on focus)
+ checkForNewRef.current()
+ }
}
- }, [enabled])
+ }, [enabled, feed, queryClient, scrollElRef])
React.useEffect(() => {
let cleanup1: () => void | undefined, cleanup2: () => void | undefined
const subscription = AppState.addEventListener('change', nextAppState => {
diff --git a/src/view/com/util/forms/PostDropdownBtn.tsx b/src/view/com/util/forms/PostDropdownBtn.tsx
index 8c4b03dd93..193bb9bd78 100644
--- a/src/view/com/util/forms/PostDropdownBtn.tsx
+++ b/src/view/com/util/forms/PostDropdownBtn.tsx
@@ -31,6 +31,7 @@ let PostDropdownBtn = ({
postUri,
record,
style,
+ showAppealLabelItem,
}: {
testID: string
postAuthor: AppBskyActorDefs.ProfileViewBasic
@@ -38,6 +39,7 @@ let PostDropdownBtn = ({
postUri: string
record: AppBskyFeedPost.Record
style?: StyleProp
+ showAppealLabelItem?: boolean
}): React.ReactNode => {
const {hasSession, currentAccount} = useSession()
const theme = useTheme()
@@ -198,6 +200,23 @@ let PostDropdownBtn = ({
web: ['far', 'trash-can'],
},
},
+ showAppealLabelItem && {
+ label: 'separator',
+ },
+ showAppealLabelItem && {
+ label: _(msg`Appeal content warning`),
+ onPress() {
+ openModal({name: 'appeal-label', uri: postUri, cid: postCid})
+ },
+ testID: 'postDropdownAppealBtn',
+ icon: {
+ ios: {
+ name: 'exclamationmark.triangle',
+ },
+ android: 'ic_menu_report_image',
+ web: 'circle-exclamation',
+ },
+ },
].filter(Boolean) as NativeDropdownItem[]
return (
diff --git a/src/view/com/util/moderation/LabelInfo.tsx b/src/view/com/util/moderation/LabelInfo.tsx
index 8fe3765c2b..970338752c 100644
--- a/src/view/com/util/moderation/LabelInfo.tsx
+++ b/src/view/com/util/moderation/LabelInfo.tsx
@@ -43,7 +43,8 @@ export function LabelInfo({
]}>
- This {'did' in details ? 'account' : 'post'} has been labeled.
+ A content warning has been applied to this{' '}
+ {'did' in details ? 'account' : 'post'}.
{' '}
{post.viewer?.like ? (
-
+
) : (
{post.likeCount}
@@ -233,9 +233,6 @@ const styles = StyleSheet.create({
paddingLeft: 5,
paddingRight: 5,
},
- ctrlIconLiked: {
- color: colors.like,
- },
mt1: {
marginTop: 1,
},
diff --git a/src/view/icons/Logotype.tsx b/src/view/icons/Logotype.tsx
index 847607a3e4..080c402fb3 100644
--- a/src/view/icons/Logotype.tsx
+++ b/src/view/icons/Logotype.tsx
@@ -1,7 +1,7 @@
import React from 'react'
import Svg, {Path, SvgProps, PathProps} from 'react-native-svg'
-import {colors} from '#/lib/styles'
+import {usePalette} from '#/lib/hooks/usePalette'
const ratio = 17 / 64
@@ -9,6 +9,7 @@ export function Logotype({
fill,
...rest
}: {fill?: PathProps['fill']} & SvgProps) {
+ const pal = usePalette('default')
// @ts-ignore it's fiiiiine
const size = parseInt(rest.width || 32)
@@ -20,7 +21,7 @@ export function Logotype({
width={size}
height={Number(size) * ratio}>
diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx
index bfe4402653..82dd1365cf 100644
--- a/src/view/screens/Home.tsx
+++ b/src/view/screens/Home.tsx
@@ -12,6 +12,7 @@ import {FeedPage} from 'view/com/feeds/FeedPage'
import {HomeLoggedOutCTA} from '../com/auth/HomeLoggedOutCTA'
import {useSetMinimalShellMode, useSetDrawerSwipeDisabled} from '#/state/shell'
import {usePreferencesQuery} from '#/state/queries/preferences'
+import {usePinnedFeedsInfos, FeedSourceInfo} from '#/state/queries/feed'
import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types'
import {emitSoftReset} from '#/state/events'
import {useSession} from '#/state/session'
@@ -21,6 +22,7 @@ import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
type Props = NativeStackScreenProps
export function HomeScreen(props: Props) {
const {data: preferences} = usePreferencesQuery()
+ const {feeds: pinnedFeeds} = usePinnedFeedsInfos()
const {isDesktop} = useWebMediaQueries()
const [initialPage, setInitialPage] = React.useState(
undefined,
@@ -39,11 +41,12 @@ export function HomeScreen(props: Props) {
loadLastActivePage()
}, [])
- if (preferences && initialPage !== undefined) {
+ if (preferences && pinnedFeeds && initialPage !== undefined) {
return (
)
@@ -58,9 +61,11 @@ export function HomeScreen(props: Props) {
function HomeScreenReady({
preferences,
+ pinnedFeeds,
initialPage,
}: Props & {
preferences: UsePreferencesQueryResponse
+ pinnedFeeds: FeedSourceInfo[]
initialPage: string
}) {
const {hasSession} = useSession()
@@ -82,9 +87,9 @@ function HomeScreenReady({
}, [preferences.feeds.pinned, selectedPage])
const customFeeds = React.useMemo(() => {
- const pinned = preferences.feeds.pinned
+ const pinned = pinnedFeeds
const feeds: FeedDescriptor[] = []
- for (const uri of pinned) {
+ for (const {uri} of pinned) {
if (uri.includes('app.bsky.feed.generator')) {
feeds.push(`feedgen|${uri}`)
} else if (uri.includes('app.bsky.graph.list')) {
@@ -92,7 +97,7 @@ function HomeScreenReady({
}
}
return feeds
- }, [preferences.feeds.pinned])
+ }, [pinnedFeeds])
const homeFeedParams = React.useMemo(() => {
return {
diff --git a/src/view/screens/PostThread.tsx b/src/view/screens/PostThread.tsx
index 8e9e399f5e..9f50c8b73b 100644
--- a/src/view/screens/PostThread.tsx
+++ b/src/view/screens/PostThread.tsx
@@ -24,11 +24,13 @@ import {useResolveUriQuery} from '#/state/queries/resolve-uri'
import {ErrorMessage} from '../com/util/error/ErrorMessage'
import {CenteredView} from '../com/util/Views'
import {useComposerControls} from '#/state/shell/composer'
+import {useSession} from '#/state/session'
type Props = NativeStackScreenProps
export function PostThreadScreen({route}: Props) {
const queryClient = useQueryClient()
const {_} = useLingui()
+ const {hasSession} = useSession()
const {fabMinimalShellTransform} = useMinimalShellMode()
const setMinimalShellMode = useSetMinimalShellMode()
const {openComposer} = useComposerControls()
@@ -89,7 +91,7 @@ export function PostThreadScreen({route}: Props) {
/>
)}
- {isMobile && canReply && (
+ {isMobile && canReply && hasSession && (
@@ -149,7 +143,6 @@ function ProfileFeedScreenIntermediate({feedUri}: {feedUri: string}) {
)
}
@@ -157,11 +150,9 @@ function ProfileFeedScreenIntermediate({feedUri}: {feedUri: string}) {
export function ProfileFeedScreenInner({
preferences,
feedInfo,
- isPublicResponse,
}: {
preferences: UsePreferencesQueryResponse
feedInfo: FeedSourceFeedInfo
- isPublicResponse: ReturnType['data']
}) {
const {_} = useLingui()
const pal = usePalette('default')
@@ -170,6 +161,7 @@ export function ProfileFeedScreenInner({
const {openComposer} = useComposerControls()
const {track} = useAnalytics()
const feedSectionRef = React.useRef(null)
+ const isScreenFocused = useIsFocused()
const {
mutateAsync: saveFeed,
@@ -205,6 +197,9 @@ export function ProfileFeedScreenInner({
useSetTitle(feedInfo?.displayName)
+ // event handlers
+ //
+
const onToggleSaved = React.useCallback(async () => {
try {
Haptics.default()
@@ -398,21 +393,15 @@ export function ProfileFeedScreenInner({
isHeaderReady={true}
renderHeader={renderHeader}
onCurrentPageSelected={onCurrentPageSelected}>
- {({headerHeight, scrollElRef, isFocused}) =>
- isPublicResponse?.isPublic ? (
-
- ) : (
-
-
-
- )
- }
+ {({headerHeight, scrollElRef, isFocused}) => (
+
+ )}
{({headerHeight, scrollElRef}) => (
-
-
-
- Looks like this feed is only available to users with a Bluesky
- account. Please sign up or sign in to view this feed!
-
-
-
- {rawError?.message && (
-
- Message from server: {rawError.message}
-
- )}
-
-
- )
-}
-
interface FeedSectionProps {
feed: FeedDescriptor
headerHeight: number
@@ -519,7 +469,7 @@ const FeedSection = React.forwardRef(
{isLiked ? (
-
+
) : (
)}
@@ -673,9 +623,6 @@ const styles = StyleSheet.create({
borderRadius: 50,
marginLeft: 6,
},
- liked: {
- color: colors.red3,
- },
notFoundContainer: {
margin: 10,
paddingHorizontal: 18,
diff --git a/src/view/screens/ProfileList.tsx b/src/view/screens/ProfileList.tsx
index 7f922e5b48..2db768cc57 100644
--- a/src/view/screens/ProfileList.tsx
+++ b/src/view/screens/ProfileList.tsx
@@ -1,6 +1,6 @@
import React, {useCallback, useMemo} from 'react'
import {ActivityIndicator, Pressable, StyleSheet, View} from 'react-native'
-import {useFocusEffect} from '@react-navigation/native'
+import {useFocusEffect, useIsFocused} from '@react-navigation/native'
import {NativeStackScreenProps, CommonNavigatorParams} from 'lib/routes/types'
import {useNavigation} from '@react-navigation/native'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
@@ -115,6 +115,7 @@ function ProfileListScreenLoaded({
const aboutSectionRef = React.useRef(null)
const {openModal} = useModalControls()
const isCurateList = list.purpose === 'app.bsky.graph.defs#curatelist'
+ const isScreenFocused = useIsFocused()
useSetTitle(list.name)
@@ -165,7 +166,7 @@ function ProfileListScreenLoaded({
feed={`list|${uri}`}
scrollElRef={scrollElRef as ListRef}
headerHeight={headerHeight}
- isFocused={isFocused}
+ isFocused={isScreenFocused && isFocused}
/>
)}
{({headerHeight, scrollElRef}) => (
@@ -623,7 +624,7 @@ const FeedSection = React.forwardRef(
testID="listFeed"
enabled={isFocused}
feed={feed}
- pollInterval={30e3}
+ pollInterval={60e3}
scrollElRef={scrollElRef}
onHasNew={setHasNew}
onScrolledDownChange={setIsScrolledDown}
diff --git a/src/view/shell/Drawer.tsx b/src/view/shell/Drawer.tsx
index 4fb8565e80..e5d2a38639 100644
--- a/src/view/shell/Drawer.tsx
+++ b/src/view/shell/Drawer.tsx
@@ -221,18 +221,16 @@ let DrawerContent = ({}: {}): React.ReactNode => {
)}
- {hasSession && }
- {hasSession && }
-
-
- {hasSession && (
-
- )}
- {hasSession && (
+ {hasSession ? (
<>
+
+
+
+
+
@@ -242,6 +240,8 @@ let DrawerContent = ({}: {}): React.ReactNode => {
/>
>
+ ) : (
+
)}
diff --git a/src/view/shell/NavSignupCard.tsx b/src/view/shell/NavSignupCard.tsx
index 8c0e2075d8..bae37e8380 100644
--- a/src/view/shell/NavSignupCard.tsx
+++ b/src/view/shell/NavSignupCard.tsx
@@ -5,11 +5,11 @@ import {useLingui} from '@lingui/react'
import {s} from 'lib/styles'
import {usePalette} from 'lib/hooks/usePalette'
-import {DefaultAvatar} from '#/view/com/util/UserAvatar'
import {Text} from '#/view/com/util/text/Text'
import {Button} from '#/view/com/util/forms/Button'
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
import {useCloseAllActiveElements} from '#/state/util'
+import {Logo} from '#/view/icons/Logo'
let NavSignupCard = ({}: {}): React.ReactNode => {
const {_} = useLingui()
@@ -35,10 +35,10 @@ let NavSignupCard = ({}: {}): React.ReactNode => {
paddingTop: 6,
marginBottom: 24,
}}>
-
+
-
-
+
+
Sign up or sign in to join the conversation
diff --git a/src/view/shell/bottom-bar/BottomBar.tsx b/src/view/shell/bottom-bar/BottomBar.tsx
index ef147f27e6..1ab3334fa8 100644
--- a/src/view/shell/bottom-bar/BottomBar.tsx
+++ b/src/view/shell/bottom-bar/BottomBar.tsx
@@ -23,13 +23,19 @@ import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode'
import {useNavigationTabState} from 'lib/hooks/useNavigationTabState'
import {UserAvatar} from 'view/com/util/UserAvatar'
import {useLingui} from '@lingui/react'
-import {msg} from '@lingui/macro'
+import {msg, Trans} from '@lingui/macro'
import {useModalControls} from '#/state/modals'
import {useShellLayout} from '#/state/shell/shell-layout'
import {useUnreadNotifications} from '#/state/queries/notifications/unread'
import {emitSoftReset} from '#/state/events'
import {useSession} from '#/state/session'
import {useProfileQuery} from '#/state/queries/profile'
+import {useLoggedOutViewControls} from '#/state/shell/logged-out'
+import {useCloseAllActiveElements} from '#/state/util'
+import {Button} from '#/view/com/util/forms/Button'
+import {s} from 'lib/styles'
+import {Logo} from '#/view/icons/Logo'
+import {Logotype} from '#/view/icons/Logotype'
type TabOptions = 'Home' | 'Search' | 'Notifications' | 'MyProfile' | 'Feeds'
@@ -46,6 +52,19 @@ export function BottomBar({navigation}: BottomTabBarProps) {
const numUnreadNotifications = useUnreadNotifications()
const {footerMinimalShellTransform} = useMinimalShellMode()
const {data: profile} = useProfileQuery({did: currentAccount?.did})
+ const {requestSwitchToAccount} = useLoggedOutViewControls()
+ const closeAllActiveElements = useCloseAllActiveElements()
+
+ const showSignIn = React.useCallback(() => {
+ closeAllActiveElements()
+ requestSwitchToAccount({requestedAccount: 'none'})
+ }, [requestSwitchToAccount, closeAllActiveElements])
+
+ const showCreateAccount = React.useCallback(() => {
+ closeAllActiveElements()
+ requestSwitchToAccount({requestedAccount: 'new'})
+ // setShowLoggedOut(true)
+ }, [requestSwitchToAccount, closeAllActiveElements])
const onPressTab = React.useCallback(
(tab: TabOptions) => {
@@ -94,53 +113,52 @@ export function BottomBar({navigation}: BottomTabBarProps) {
onLayout={e => {
footerHeight.value = e.nativeEvent.layout.height
}}>
-
- ) : (
-
- )
- }
- onPress={onPressHome}
- accessibilityRole="tab"
- accessibilityLabel={_(msg`Home`)}
- accessibilityHint=""
- />
-
- ) : (
-
- )
- }
- onPress={onPressSearch}
- accessibilityRole="search"
- accessibilityLabel={_(msg`Search`)}
- accessibilityHint=""
- />
-
- {hasSession && (
+ {hasSession ? (
<>
+
+ ) : (
+
+ )
+ }
+ onPress={onPressHome}
+ accessibilityRole="tab"
+ accessibilityLabel={_(msg`Home`)}
+ accessibilityHint=""
+ />
+
+ ) : (
+
+ )
+ }
+ onPress={onPressSearch}
+ accessibilityRole="search"
+ accessibilityLabel={_(msg`Search`)}
+ accessibilityHint=""
+ />
>
+ ) : (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
)}
)
diff --git a/src/view/shell/bottom-bar/BottomBarWeb.tsx b/src/view/shell/bottom-bar/BottomBarWeb.tsx
index d2d8ef63fc..b330c4b808 100644
--- a/src/view/shell/bottom-bar/BottomBarWeb.tsx
+++ b/src/view/shell/bottom-bar/BottomBarWeb.tsx
@@ -3,6 +3,9 @@ import {usePalette} from 'lib/hooks/usePalette'
import {useNavigationState} from '@react-navigation/native'
import Animated from 'react-native-reanimated'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
+import {View} from 'react-native'
+import {msg, Trans} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
import {getCurrentRoute, isTab} from 'lib/routes/helpers'
import {styles} from './BottomBarStyles'
import {clamp} from 'lib/numbers'
@@ -22,12 +25,33 @@ import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode'
import {makeProfileLink} from 'lib/routes/links'
import {CommonNavigatorParams} from 'lib/routes/types'
import {useSession} from '#/state/session'
+import {useLoggedOutViewControls} from '#/state/shell/logged-out'
+import {useCloseAllActiveElements} from '#/state/util'
+import {Button} from '#/view/com/util/forms/Button'
+import {Text} from '#/view/com/util/text/Text'
+import {s} from 'lib/styles'
+import {Logo} from '#/view/icons/Logo'
+import {Logotype} from '#/view/icons/Logotype'
export function BottomBarWeb() {
+ const {_} = useLingui()
const {hasSession, currentAccount} = useSession()
const pal = usePalette('default')
const safeAreaInsets = useSafeAreaInsets()
const {footerMinimalShellTransform} = useMinimalShellMode()
+ const {requestSwitchToAccount} = useLoggedOutViewControls()
+ const closeAllActiveElements = useCloseAllActiveElements()
+
+ const showSignIn = React.useCallback(() => {
+ closeAllActiveElements()
+ requestSwitchToAccount({requestedAccount: 'none'})
+ }, [requestSwitchToAccount, closeAllActiveElements])
+
+ const showCreateAccount = React.useCallback(() => {
+ closeAllActiveElements()
+ requestSwitchToAccount({requestedAccount: 'new'})
+ // setShowLoggedOut(true)
+ }, [requestSwitchToAccount, closeAllActiveElements])
return (
-
- {({isActive}) => {
- const Icon = isActive ? HomeIconSolid : HomeIcon
- return (
-
- )
- }}
-
-
- {({isActive}) => {
- const Icon = isActive
- ? MagnifyingGlassIcon2Solid
- : MagnifyingGlassIcon2
- return (
-
- )
- }}
-
-
- {hasSession && (
+ {hasSession ? (
<>
-
+
{({isActive}) => {
- return (
-
- )
- }}
-
-
- {({isActive}) => {
- const Icon = isActive ? BellIconSolid : BellIcon
+ const Icon = isActive ? HomeIconSolid : HomeIcon
return (
)
}}
-
+
{({isActive}) => {
- const Icon = isActive ? UserIconSolid : UserIcon
+ const Icon = isActive
+ ? MagnifyingGlassIcon2Solid
+ : MagnifyingGlassIcon2
return (
)
}}
+
+ {hasSession && (
+ <>
+
+ {({isActive}) => {
+ return (
+
+ )
+ }}
+
+
+ {({isActive}) => {
+ const Icon = isActive ? BellIconSolid : BellIcon
+ return (
+
+ )
+ }}
+
+
+ {({isActive}) => {
+ const Icon = isActive ? UserIconSolid : UserIcon
+ return (
+
+ )
+ }}
+
+ >
+ )}
+ >
+ ) : (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
)}
diff --git a/src/view/shell/desktop/LeftNav.tsx b/src/view/shell/desktop/LeftNav.tsx
index ed9808e668..9c89eac6ff 100644
--- a/src/view/shell/desktop/LeftNav.tsx
+++ b/src/view/shell/desktop/LeftNav.tsx
@@ -266,6 +266,10 @@ export function DesktopLeftNav() {
const {isDesktop, isTablet} = useWebMediaQueries()
const numUnread = useUnreadNotifications()
+ if (!hasSession && !isDesktop) {
+ return null
+ }
+
return (
) : null}
-
-
- }
- iconFilled={
-
- }
- label={_(msg`Home`)}
- />
-
- }
- iconFilled={
-
- }
- label={_(msg`Search`)}
- />
{hasSession && (
<>
+
+
+ }
+ iconFilled={
+
+ }
+ label={_(msg`Home`)}
+ />
+
+ }
+ iconFilled={
+
+ }
+ label={_(msg`Search`)}
+ />
}
- label="Profile"
+ label={_(msg`Profile`)}
/>
) : undefined}
-
+
{hasSession && (
<>