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." #~ 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>कुछ<1>पसंदीदा उपयोगकर्ता #~ msgid "<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting." #~ 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>Bluesky में आपका स्वागत है" 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 your<1>Recommended<2>Feeds" -msgstr "<1>推奨<2>フィード<0>を選択" +msgstr "<1>おすすめの<2>フィード<0>を選択" #: src/view/com/auth/onboarding/RecommendedFollows.tsx:37 msgid "<0>Follow some<1>Recommended<2>Users" -msgstr "<1>推奨<2>ユーザー<0>をフォロー" +msgstr "<1>おすすめの<2>ユーザー<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>Bluesky" @@ -2299,7 +2331,11 @@ msgstr "<0>Blueskyへようこそ" #: 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 && ( <>