Alex Gleason
|
25db277a9f
|
storeMiddleware: remove `as string`
|
2024-04-29 15:10:08 -05:00 |
Alex Gleason
|
0925f37929
|
Make storeMiddleware available in every request
|
2024-04-29 15:05:08 -05:00 |
P. Reis
|
bb82df14c6
|
refactor: user preference in create & verify credentials
|
2024-04-29 13:49:12 -03:00 |
P. Reis
|
6627704114
|
feat: save user preferences (kind 30078) & encrypt it
|
2024-04-28 17:07:41 -03:00 |
Alex Gleason
|
1ea5591393
|
Improve mentions performance
|
2024-04-28 12:12:58 -05:00 |
P. Reis
|
86573a579b
|
refactor: store middleware
|
2024-04-27 20:59:35 -03:00 |
P. Reis
|
ab7a60c6de
|
fix(UserStore): add missing return keyword in array filter
|
2024-04-27 17:04:14 -03:00 |
P. Reis
|
a7912e0800
|
feat: if possible use userStore in renderStatuses()
|
2024-04-27 17:03:30 -03:00 |
P. Reis
|
18508d37f2
|
feat: define userStore in HonoEnv & set userStore middleware in home timeline
|
2024-04-27 17:02:07 -03:00 |
P. Reis
|
7b864482bf
|
feat: create user store middleware
|
2024-04-27 17:00:03 -03:00 |
Alex Gleason
|
606ab58c0a
|
UserStore.test: use MockRelay
|
2024-04-26 15:39:28 -05:00 |
Alex Gleason
|
7e053fbeea
|
Merge branch 'feat-create-user-store' into 'main'
Create a UserStore class
See merge request soapbox-pub/ditto!184
|
2024-04-26 20:33:01 +00:00 |
P. Reis
|
8a460d6bc5
|
test: create rough tests for UserStore
|
2024-04-26 16:23:10 -03:00 |
P. Reis
|
2b8ad8c349
|
Merge branch 'main' into feat-create-user-store
|
2024-04-26 16:06:10 -03:00 |
P. Reis
|
c87db6d1f8
|
refactor: remove muteList as a field
|
2024-04-26 16:05:53 -03:00 |
Alex Gleason
|
f61d29eb66
|
Upgrade Nostrify to v0.15, use MockRelay in tests instead of NCache
|
2024-04-26 12:33:52 -05:00 |
Alex Gleason
|
498e91ee7c
|
Merge remote-tracking branch 'origin/main' into refactor-subs
|
2024-04-25 21:27:57 -05:00 |
Alex Gleason
|
f1700a08f9
|
InternalRelay: fix event distribution
|
2024-04-25 21:04:34 -05:00 |
Alex Gleason
|
b04d0c42e6
|
Merge remote-tracking branch 'origin/main' into refactor-subs
|
2024-04-25 19:04:01 -05:00 |
Alex Gleason
|
4e4b7711c9
|
relay: NSchema
|
2024-04-25 18:48:02 -05:00 |
Alex Gleason
|
7ee258fe87
|
relay: fix local filtering logic
|
2024-04-25 18:46:34 -05:00 |
Alex Gleason
|
333dfca270
|
Storages: typofix subsub -> pubsub
|
2024-04-25 18:31:16 -05:00 |
Alex Gleason
|
05534d532b
|
APISigner: refactor with InternalRelay
|
2024-04-25 18:28:19 -05:00 |
Alex Gleason
|
7aa931a69e
|
try-catch the InternalRelay req's
|
2024-04-25 18:24:03 -05:00 |
Alex Gleason
|
7a18a19b2f
|
Remove subs.ts & subscription.ts, refactor around it
|
2024-04-25 18:23:26 -05:00 |
P. Reis
|
ddc84bf47a
|
refactor(UserStore): change fields to private & handle in case of muteList undefined
|
2024-04-25 18:43:12 -03:00 |
Alex Gleason
|
60ca3652bb
|
try-catch the InternalRelay req's
|
2024-04-25 16:36:20 -05:00 |
P. Reis
|
6c292b8da4
|
feat: create UserStore class
|
2024-04-25 16:41:40 -03:00 |
Alex Gleason
|
f33ad04084
|
Remove subs.ts & subscription.ts, refactor around it
|
2024-04-25 13:18:35 -05:00 |
Alex Gleason
|
fc47116dd3
|
APISigner: reimplement with NConnectSigner and InternalRelay
|
2024-04-25 12:32:39 -05:00 |
Alex Gleason
|
8407583d83
|
Add InternalRelay class
|
2024-04-25 11:54:25 -05:00 |
Alex Gleason
|
677720f15e
|
Unrestrict media uploads
|
2024-04-24 19:22:36 -05:00 |
Alex Gleason
|
953295c534
|
server.ts: Conf.localPort -> Conf.port
|
2024-04-24 16:26:56 +00:00 |
Siddharth Singh
|
58b034e169
|
rename DITTO_LISTEN_ON and localPort() to PORT and port()
|
2024-04-24 21:38:05 +05:30 |
Siddharth Singh
|
3880f1e013
|
allow configuring the local port ditto listens on
|
2024-04-24 21:32:02 +05:30 |
Alex Gleason
|
1f5ba81e98
|
hydrateEvents: early return is only needed for stats?
|
2024-04-23 21:40:02 -05:00 |
Alex Gleason
|
a2c3daade7
|
hydrateEvents: return early if the results would be empty
|
2024-04-23 21:32:48 -05:00 |
Alex Gleason
|
b8d01ea3de
|
hydrateEvents: use filters to find events in memory
|
2024-04-23 21:10:21 -05:00 |
Alex Gleason
|
a1423bbf65
|
Fix hydrateEvents, lol
|
2024-04-23 20:11:07 -05:00 |
Alex Gleason
|
191b370c85
|
hydrate.test: remove unnecessary boilerplate
|
2024-04-23 19:50:23 -05:00 |
Alex Gleason
|
0aab3eb775
|
Rewrite hydrateEvents
|
2024-04-23 19:31:48 -05:00 |
Alex Gleason
|
3204b61f0b
|
Add an API to manage admin relays
|
2024-04-23 16:21:36 -05:00 |
Alex Gleason
|
5d84566385
|
Merge branch 'perf-hydrate-events' into 'main'
Performance: hydrate events makes up to 5 calls to database
See merge request soapbox-pub/ditto!175
|
2024-04-23 20:24:55 +00:00 |
P. Reis
|
58d75d1939
|
fix: hydrate events stats and author stats with filter by kind
|
2024-04-23 17:19:34 -03:00 |
P. Reis
|
5fca482e5c
|
refactor(hydrate events): change array to Map
|
2024-04-23 17:04:05 -03:00 |
Alex Gleason
|
0f9cc9fe51
|
zod import alias
|
2024-04-23 15:03:20 -05:00 |
Alex Gleason
|
a53a21ffcf
|
pipeline: print policy result
|
2024-04-23 01:29:18 -05:00 |
Alex Gleason
|
69178ae523
|
Load a custom policy from data/policy.ts
|
2024-04-23 01:11:37 -05:00 |
P. Reis
|
7a12e5ec7b
|
test: rough adapt tests for new performance hydratation
|
2024-04-22 22:15:41 -03:00 |
P. Reis
|
062e21e8a8
|
test: remove 'hydrate quote repost WITHOUT hydrate author'
|
2024-04-22 22:15:41 -03:00 |
P. Reis
|
b77c8a00cd
|
perf: make up to 5 calls to database in hydrateEvents & remove old hydrate functions
|
2024-04-22 22:15:36 -03:00 |
P. Reis
|
12b030c8aa
|
refactor: decode pubkey with right import in search account
|
2024-04-20 21:52:36 -03:00 |
P. Reis
|
49f06869a3
|
feat: render account from pubkey if no kind 0 exists - /v2/search
|
2024-04-20 21:26:05 -03:00 |
P. Reis
|
60a1ff7adc
|
feat: render account from pubkey if no kind 0 exists - /v1/accounts/search
|
2024-04-20 21:03:17 -03:00 |
Alex Gleason
|
64d50552b7
|
Import hono with an import alias
|
2024-04-20 18:54:15 -05:00 |
Alex Gleason
|
505a9bced1
|
Fix type of AppController
|
2024-04-20 18:47:34 -05:00 |
Alex Gleason
|
0ddb1782e5
|
DittoDB: support `postgresql:` protocol
|
2024-04-19 21:20:35 -05:00 |
Alex Gleason
|
80e554a5c9
|
Update deno.json imports
|
2024-04-19 21:08:13 -05:00 |
Alex Gleason
|
9ccf6bbea0
|
Mold the things to work with Postgres
|
2024-04-19 20:52:42 -05:00 |
Alex Gleason
|
b87a59c521
|
Merge remote-tracking branch 'origin/main' into postgres
|
2024-04-19 18:32:02 -05:00 |
P. Reis
|
bbe8df8217
|
refactor(utils): resolve import specifier via the active import map
|
2024-04-19 19:46:42 -03:00 |
Alex Gleason
|
9c91e41e87
|
Switch NSpec to Nostrify, update imports
|
2024-04-19 16:39:35 -05:00 |
Alex Gleason
|
450acddc32
|
Remove pragma.ts
|
2024-04-19 15:34:05 -05:00 |
Alex Gleason
|
2e41254507
|
Add Postgres adapter
|
2024-04-19 15:17:09 -05:00 |
Alex Gleason
|
3753648f99
|
Use new DittoDB module, rename old interface to DittoTables
|
2024-04-19 12:26:15 -05:00 |
Alex Gleason
|
4085443e45
|
Add DittoDB module for selecting a database depending on the DATABASE_URL
|
2024-04-19 12:21:32 -05:00 |
Alex Gleason
|
29102d272a
|
Add DittoSQLite module
|
2024-04-19 12:16:48 -05:00 |
Alex Gleason
|
1cb53bdb84
|
Revert "Merge branch 'rework-cache' into 'main'"
This reverts merge request !156
|
2024-04-19 14:37:53 +00:00 |
P. Reis
|
e2b377d9c7
|
fix: reblogged field boolean value takes into account viewerPubkey
|
2024-04-19 11:12:11 -03:00 |
P. Reis
|
ae5fe1e0ac
|
fix: hydrate event_stats in hydrateRepostEvents()
|
2024-04-19 10:23:34 -03:00 |
Alex Gleason
|
e458f8da13
|
Introduce DATABASE_URL
|
2024-04-18 22:11:58 -05:00 |
P. Reis
|
7dd6378717
|
test: improv code coverage in quote repost hydration
|
2024-04-18 11:30:49 -03:00 |
Alex Gleason
|
c62c31a171
|
updateStats: await getStatsDiff
|
2024-04-17 22:58:25 -05:00 |
P. Reis
|
e19e41f826
|
fix: always populate quote_id if possible
|
2024-04-16 15:16:18 -03:00 |
P. Reis
|
e4892c3e4a
|
fix: response with quote field hydrated in create status
|
2024-04-16 14:44:04 -03:00 |
P. Reis
|
a00a932ec1
|
refactor: deno fmt in hydrate test
|
2024-04-16 13:53:00 -03:00 |
P. Reis
|
ed92001b75
|
test: fix so copied object is used instead of original object
|
2024-04-16 13:41:32 -03:00 |
P. Reis
|
3219b53682
|
test: add test for hydrate quote repost without author & fix tests' parallelism problem
|
2024-04-16 13:25:43 -03:00 |
P. Reis
|
4a9232faf7
|
test: add test for hydrate quote repost
|
2024-04-16 09:31:03 -03:00 |
P. Reis
|
d5007162e4
|
refactor(hydrate): remove empty lines
|
2024-04-15 17:25:18 -03:00 |
P. Reis
|
a993051439
|
refactor: pass abort signal in hydrateRepostEvents
|
2024-04-15 17:19:37 -03:00 |
P. Reis
|
6248272243
|
feat: add quote repost
|
2024-04-15 17:19:37 -03:00 |
P. Reis
|
e77fd7d48b
|
refactor: hydrate authors through hydrateEvents() call
|
2024-04-15 10:49:10 -03:00 |
P. Reis
|
b9c1d0c5fb
|
refactor(hydrate test): cast event as DittoEvent instead of any
|
2024-04-14 22:44:37 -03:00 |
P. Reis
|
b79f8bef30
|
test: add test for hydrate repost
|
2024-04-14 21:02:57 -03:00 |
P. Reis
|
dd53a111db
|
test: add test to hydrate authors
|
2024-04-14 19:03:38 -03:00 |
P. Reis
|
f9831ba74a
|
refactor(events-db-test): resolve import specifier via the active import map
|
2024-04-14 10:32:22 -03:00 |
Alex Gleason
|
fe6b42211c
|
Merge branch 'perf-hydrate-repost' into 'main'
Perf hydrate repost
See merge request soapbox-pub/ditto!154
|
2024-04-13 21:37:54 +00:00 |
P. Reis
|
15853d79df
|
refactor: remove kind 1 event from hydrateEvents in reblog controller
|
2024-04-13 18:31:30 -03:00 |
P. Reis
|
37bee709cd
|
perf: hydrate repost events in reblog endpoint & streaming
|
2024-04-13 18:16:15 -03:00 |
Alex Gleason
|
ff3d8e3f90
|
cache: use the old response body to prevent memory leaks
|
2024-04-13 14:36:31 -05:00 |
Alex Gleason
|
afed0a0b34
|
cache: serve stale response
|
2024-04-13 14:34:37 -05:00 |
Alex Gleason
|
6ab3a640bf
|
Rework cache middleware to use in-memory cache, remove ExpiringCache module
|
2024-04-13 14:00:21 -05:00 |
Alex Gleason
|
a738ed3d4d
|
Merge branch 'instance-cache' into 'main'
Cache /api/v1/instance for 5 minutes
See merge request soapbox-pub/ditto!155
|
2024-04-13 18:30:40 +00:00 |
Alex Gleason
|
6aa877d930
|
Cache /api/v1/instance for 5 minutes
|
2024-04-13 13:28:08 -05:00 |
P. Reis
|
24efca5ea0
|
perf: hydrate repost event in home timeline
|
2024-04-12 21:51:57 -03:00 |
P. Reis
|
581ecd67d6
|
refactor(server): resolve import specifier via the active import map
|
2024-04-12 21:34:32 -03:00 |
P. Reis
|
0f4c76c761
|
refactor(fetch test): resolve import specifier via the active import map
|
2024-04-12 14:26:45 -03:00 |
P. Reis
|
073a3df17e
|
feat: add support for quote repost
|
2024-04-12 14:07:22 -03:00 |
P. Reis
|
3ebcf7ea25
|
refactor: undo repost counter in getStatsDiff
|
2024-04-11 09:53:24 -03:00 |
P. Reis
|
cdb0d817ed
|
fix: repost counter works when undo repost
|
2024-04-10 19:15:24 -03:00 |
P. Reis
|
9f24f35a21
|
refactor: cast pubkey as string
|
2024-04-09 20:32:27 -03:00 |
Alex Gleason
|
a63dc8be4e
|
Apply 2 suggestion(s) to 1 file(s)
|
2024-04-09 22:08:37 +00:00 |
P. Reis
|
7e8401688c
|
feat: undo repost
|
2024-04-09 18:27:17 -03:00 |
P. Reis
|
11f668dc8c
|
refactor(interfaces): resolve import specifier via the active import map
|
2024-04-09 15:08:07 -03:00 |
P. Reis
|
dd307f5b3f
|
fix: always update home timeline in realtime when reposting
|
2024-04-09 11:35:18 -03:00 |
Alex Gleason
|
06ca3706b8
|
Apply 1 suggestion(s) to 1 file(s)
|
2024-04-09 14:27:41 +00:00 |
P. Reis
|
846c8824d4
|
Merge branch 'main' into 'fix-find-event'
# Conflicts:
# src/views/mastodon/statuses.ts
|
2024-04-08 18:46:11 +00:00 |
Alex Gleason
|
9bfed222da
|
unfurlCard: fix types
|
2024-04-08 11:38:59 -05:00 |
Alex Gleason
|
57b0224517
|
renderReblog: fix types
|
2024-04-08 11:34:21 -05:00 |
P. Reis
|
0da9d2e3f4
|
fix: find event and not pubkey in renderReblog
|
2024-04-08 13:28:30 -03:00 |
Alex Gleason
|
70a29a74fb
|
Merge branch 'repost-feat' into 'main'
feat: repost functionality
See merge request soapbox-pub/ditto!133
|
2024-04-08 15:54:43 +00:00 |
Alex Gleason
|
d7d52bbdee
|
Apply 1 suggestion(s) to 1 file(s)
|
2024-04-08 15:53:08 +00:00 |
Alex Gleason
|
1f7a4664ec
|
Apply 2 suggestion(s) to 2 file(s)
|
2024-04-08 15:49:35 +00:00 |
Alex Gleason
|
595d5a4117
|
Avoid EventDB.count for single row fetches
|
2024-04-08 10:43:26 -05:00 |
Alex Gleason
|
2fb2b2ce2a
|
SqliteWorker: log query parameters
|
2024-04-08 09:13:20 -05:00 |
Alex Gleason
|
4e999d0f39
|
SqliteWorker: only call perf functions when debugging is enabled
|
2024-04-08 08:51:04 -05:00 |
Alex Gleason
|
8185843f12
|
SqliteWorker: clear performance marks & measures
|
2024-04-08 08:37:37 -05:00 |
P. Reis
|
d8a471272d
|
feat: update home timeline in realtime when reposting
|
2024-04-07 20:37:54 -03:00 |
P. Reis
|
25b1e7229c
|
fix: stop home timeline hanging/loading when no posts are available
|
2024-04-07 20:26:47 -03:00 |
Alex Gleason
|
0bac971818
|
Upgrade unfurl to v6.4.0
|
2024-04-06 21:44:17 -05:00 |
Alex Gleason
|
49c9b0eff9
|
renderAccount: add pleroma.is_local parameter
|
2024-04-06 21:12:48 -05:00 |
P. Reis
|
25fcd04d9f
|
fix: deno fmt
|
2024-04-06 23:12:30 -03:00 |
P. Reis
|
ba08958b30
|
feat: attempt to delete repost if original post is deleted
|
2024-04-06 22:32:39 -03:00 |
Alex Gleason
|
7860a0e3c2
|
Allow setting external URI on statuses
|
2024-04-06 19:36:12 -05:00 |
Alex Gleason
|
b031224fe5
|
createStatusController: parse hashtags in text
|
2024-04-06 19:15:59 -05:00 |
Alex Gleason
|
7e7cf1df64
|
createStatusController: parse mentions in text
|
2024-04-06 18:51:37 -05:00 |
Alex Gleason
|
215d184808
|
accountSearchController: utilize the searchStore
|
2024-04-06 14:56:48 -05:00 |
Alex Gleason
|
c0c586b364
|
Add last_updated_at column to pubkey_domains
|
2024-04-05 21:48:59 -05:00 |
P. Reis
|
bd5899029e
|
refactor: deno fmt
|
2024-04-05 19:52:29 -03:00 |
P. Reis
|
178a3c4d0e
|
feat: repost functionality
|
2024-04-05 19:44:12 -03:00 |
Alex Gleason
|
55ba4a3a9b
|
Remove X-Nostr-Sign header support
|
2024-04-05 17:40:42 -05:00 |
Alex Gleason
|
4b2b658685
|
Fix type errors
|
2024-04-05 14:18:46 -05:00 |
P. Reis
|
d688e64219
|
fix(queries): event deconstruct inside getEvent
|
2024-04-04 17:27:52 -03:00 |
P. Reis
|
2113c73f09
|
refactor: resolve import specifier via the active import map
|
2024-04-03 19:39:06 -03:00 |
P. Reis
|
152e06ce3c
|
fix: event deconstruct inside getAuthor
|
2024-04-03 18:05:07 -03:00 |
Alex Gleason
|
5e834d2a6b
|
pipeline: remove broadcast function
|
2024-04-02 19:53:11 -05:00 |
Alex Gleason
|
d577c51c74
|
PoolStore: don't publish to own relay
|
2024-04-02 19:36:40 -05:00 |
Alex Gleason
|
4e54589c09
|
Deliver API events to outbox relays
|
2024-04-02 18:29:26 -05:00 |
Alex Gleason
|
957a82ce51
|
hydrateEvents: handle hydrating users
|
2024-03-30 23:39:06 -05:00 |
Alex Gleason
|
21bec6b131
|
pipeline: call hydrateEvents from hydrateEvent
|
2024-03-30 23:38:48 -05:00 |
Alex Gleason
|
c71d3f9d3c
|
renderAccount: stop calling findUser, rely on event hydration
|
2024-03-30 23:25:12 -05:00 |
Alex Gleason
|
d103d0f1d6
|
Make Conf a static class, cache pubkey
|
2024-03-30 22:56:09 -05:00 |
Alex Gleason
|
d9cbbe2074
|
/api/v1/relationships: requirePubkey
|
2024-03-30 18:32:54 -05:00 |
Alex Gleason
|
a106218439
|
hydrateEvents: restore stats
|
2024-03-30 17:44:17 -05:00 |
Alex Gleason
|
a3201f4f33
|
hydrateEvents: in -> of
|
2024-03-30 16:30:48 -05:00 |
Alex Gleason
|
4dfd958718
|
hydrateEvents: refactor a separate hydrateAuthors function
|
2024-03-30 16:12:48 -05:00 |
Alex Gleason
|
2a032b7b7b
|
DELETE /api/v1/statuses/:id
|
2024-03-30 13:34:18 -05:00 |
Alex Gleason
|
d4c94ba549
|
Remove DITTO_ENV config, make registrations always open
|
2024-03-29 11:51:32 -05:00 |
Alex Gleason
|
a19f1aa6e8
|
NIP05 DRYer
|
2024-03-27 19:45:03 -05:00 |
Alex Gleason
|
435c69e6a8
|
nip05Cache: lookup local nip05 from direct database call
|
2024-03-27 18:39:50 -05:00 |
Alex Gleason
|
0cfef1cb59
|
sentry: tracesSampleRate 1.0
|
2024-03-27 18:22:50 -05:00 |
Alex Gleason
|
9842b1aedd
|
Remove username from user events
|
2024-03-27 18:11:07 -05:00 |
Alex Gleason
|
8baa9a16db
|
nostrController: serve names from labels
|
2024-03-27 15:10:13 -05:00 |
Alex Gleason
|
0fde577149
|
EventsDB: fix the tag queries bug, DVM: remove unnecessary conditional
|
2024-03-26 21:42:17 -05:00 |
Alex Gleason
|
29a63f262f
|
Log relay error, remove unnecessary DVM conditional
|
2024-03-26 21:10:59 -05:00 |
Alex Gleason
|
940fc7a305
|
Add DVM module, process domain name requests
|
2024-03-26 19:28:13 -05:00 |
Alex Gleason
|
e1bc55fcf4
|
updateCredentialsController: withSource true
|
2024-03-25 12:35:57 -05:00 |
Alex Gleason
|
4dd527474c
|
renderAccount: return the unverified nip05 raw value
|
2024-03-25 12:32:15 -05:00 |
Alex Gleason
|
75c277e7e8
|
updateCredentials: allow setting nip05 through the API, remove restrictions on update_credentials
|
2024-03-24 16:42:19 -05:00 |
Alex Gleason
|
cfc2f02104
|
EventsDB: expandFilters, greatly speed up domain timelines
Fixes: https://gitlab.com/soapbox-pub/ditto/-/issues/80
|
2024-03-22 17:55:22 -05:00 |
Alex Gleason
|
c3adafa860
|
EventsDB: use a subquery instead of a join
|
2024-03-21 19:22:40 -05:00 |
Alex Gleason
|
8bed0c17be
|
paginationSchema: don't set a default for `until`
|
2024-03-21 19:22:25 -05:00 |
Alex Gleason
|
ccffe3abea
|
streaming.ts: remove unused import of getAuthor
|
2024-03-20 13:49:44 -05:00 |
Alex Gleason
|
25a4384587
|
Hydrate event author in pipeline to relieve streaming API
|
2024-03-20 13:49:02 -05:00 |
Alex Gleason
|
07ebb490d2
|
Make streaming by domain work
|
2024-03-20 13:42:59 -05:00 |
Alex Gleason
|
b4c05c4ba3
|
publicTimelineController: support remote timelines
|
2024-03-20 13:23:55 -05:00 |
Alex Gleason
|
f2db6c50b8
|
pubkey_domains `domain` cannot be null
|
2024-03-20 13:21:34 -05:00 |
Alex Gleason
|
a8b5888e6d
|
pipeline: get nip05 domain correctly
|
2024-03-20 13:20:12 -05:00 |
Alex Gleason
|
b2bc46ac57
|
Removed DittoFilter usages I missed earlier
|
2024-03-20 12:01:38 -05:00 |
Alex Gleason
|
dcd0728b19
|
EventsDB: fix domain test
|
2024-03-20 11:56:30 -05:00 |
Alex Gleason
|
ad2261a37e
|
Move accountLookup function into a separate module (to prevent circular dependencies)
|
2024-03-20 11:55:21 -05:00 |
Alex Gleason
|
c8b378ad10
|
Remove DittoFilter, use search instead of local
|
2024-03-20 11:34:04 -05:00 |
Alex Gleason
|
d17d4c846f
|
EventsDB: allow searching by domain
|
2024-03-19 22:53:06 -05:00 |
Alex Gleason
|
245cb43771
|
EventsDB: parse nip50 extensions
|
2024-03-19 22:46:54 -05:00 |
Alex Gleason
|
e2cc6132be
|
Track pubkey domains
|
2024-03-19 17:45:19 -05:00 |
Alex Gleason
|
d9056f66c6
|
SearchStore: switch to nspec NRelay1
|
2024-03-17 15:44:49 -05:00 |
Alex Gleason
|
2a0cba55e6
|
streamingController: allow to connect without authorization
|
2024-03-16 16:44:25 -05:00 |
Alex Gleason
|
648c32986b
|
pipeline: remove awkward registerUser flow
|
2024-03-16 15:07:45 -05:00 |
Alex Gleason
|
04cdbd11c9
|
purifyEvent: function signature
|
2024-03-16 13:19:39 -05:00 |
Alex Gleason
|
09369a0122
|
hydrateEvent -> purifyEvent (it sounds cooler)
|
2024-03-16 13:19:11 -05:00 |
Alex Gleason
|
0df4ac7331
|
pipeline: let the people post
|
2024-03-16 13:16:35 -05:00 |
Alex Gleason
|
3c8b5be783
|
pipeline: fix hydrateEvent
|
2024-03-12 17:09:22 -05:00 |
Alex Gleason
|
b867f6c33c
|
accounts: nostr.npub -> nostr.pubkey
|
2024-03-12 16:32:43 -05:00 |
Alex Gleason
|
45e1762b50
|
pipeline: handle registrations
|
2024-03-12 16:10:19 -05:00 |
Alex Gleason
|
0bcf81e438
|
Use nostr-wasm
|
2024-03-12 14:36:10 -05:00 |
Alex Gleason
|
8b9566d79b
|
Remove relations filters, switch some stuff to use optimizer (requires bravery)
|
2024-03-06 12:55:02 -06:00 |
Alex Gleason
|
1499f9b417
|
Try hydrating timelines in a separate query instead of using relations
|
2024-03-05 14:26:38 -06:00 |
Alex Gleason
|
7eaa652ae9
|
Fix EventsDB tests
|
2024-03-02 21:46:23 -06:00 |
Alex Gleason
|
2972cb4b6d
|
Add event stats indexes
|
2024-03-02 21:20:43 -06:00 |
Alex Gleason
|
e4f53b3936
|
Soft-delete events
|
2024-03-02 21:11:45 -06:00 |
Alex Gleason
|
96b5ecc435
|
Fix dropIndex calls
|
2024-03-02 19:23:28 -06:00 |
Alex Gleason
|
19adb3ab44
|
Use composite index for tags
|
2024-03-02 19:21:48 -06:00 |
Alex Gleason
|
9c4301e791
|
getConfigs: wrap in try-catch
|
2024-03-02 18:08:37 -06:00 |
Alex Gleason
|
dffa70e2fe
|
Add missing index on kind-pubkey-created_at
|
2024-03-02 17:57:43 -06:00 |
Alex Gleason
|
dc57415df3
|
SqliteWorker: log amount of time each query takes
|
2024-03-02 17:40:29 -06:00 |
Alex Gleason
|
c24e1f42a6
|
Make Pleroma config more resilient to corrupted events
|
2024-02-22 11:39:11 -06:00 |
Alex Gleason
|
f853801461
|
EventsDB: index 1985 label tags
|
2024-02-21 15:51:48 -06:00 |
Alex Gleason
|
641d2872d8
|
Actually, revert anything Alby would sign to nip04 since Alby doesn't support nip44 yet
|
2024-02-21 14:50:26 -06:00 |
Alex Gleason
|
d5d642b10b
|
Switch all nip04 calls to nip44
|
2024-02-21 14:39:05 -06:00 |
Alex Gleason
|
be3f1104db
|
getAndRenderAccount: render account from pubkey if not found
|
2024-02-19 14:20:00 -06:00 |
Alex Gleason
|
fe6dd01b68
|
Add ditto.is_registered property to Account
|
2024-02-18 10:41:18 -06:00 |
Alex Gleason
|
7a38cfbc40
|
Remove Sentry from SqliteWorker
It seems to be destroying CPU performance?
|
2024-02-17 14:34:38 -06:00 |
Alex Gleason
|
491c3f5125
|
Catch client.query calls
|
2024-02-14 15:25:25 -06:00 |
Alex Gleason
|
8d6f8e7d8d
|
Add npub to Account entity
|
2024-02-13 20:23:33 -06:00 |
Alex Gleason
|
ca31341e04
|
Fix double await
|
2024-02-12 13:43:03 -06:00 |
Alex Gleason
|
2b9b005250
|
Remove nip04 from deps.ts
|
2024-02-12 12:03:19 -06:00 |
Alex Gleason
|
5961b28c36
|
Remove crypo.ts, call AdminSigner instead
|
2024-02-12 12:01:35 -06:00 |
Alex Gleason
|
59d53c4a2f
|
Add APISigner and AdminSigner classes, implement NostrSigner interface
|
2024-02-12 11:52:05 -06:00 |
Alex Gleason
|
1e3f637358
|
verifySignatureWorker -> verifyEventWorker
|
2024-02-12 11:42:25 -06:00 |
Alex Gleason
|
dbff3fee9a
|
Upgrade nostr-tools to v2.1.5
|
2024-02-12 11:40:17 -06:00 |
Alex Gleason
|
cb80770fc7
|
Upgrade NSpec, update `count` interface
|
2024-02-12 10:48:26 -06:00 |
Alex Gleason
|
676bd04229
|
Switch to my fork of nostr-relaypool
|
2024-02-02 16:49:47 -06:00 |
Alex Gleason
|
e9d29075eb
|
pipeline: catch error on broadcast
|
2024-02-02 14:51:22 -06:00 |
Alex Gleason
|
7b7cd8b15c
|
autoReconnect!!
|
2024-02-02 14:49:27 -06:00 |
Alex Gleason
|
ae6c0e712b
|
NLib -> NSpec
|
2024-02-01 14:42:45 -06:00 |
Alex Gleason
|
427d75751a
|
assert -> with
|
2024-01-31 16:45:50 -06:00 |
Alex Gleason
|
62e227a181
|
Switch debug-js to stickynotes
|
2024-01-31 16:24:09 -06:00 |
Alex Gleason
|
7a8fb1ba6e
|
Upgrade LRUCache and NLib
|
2024-01-25 15:48:05 -06:00 |
Alex Gleason
|
57e9534552
|
Zaps: dehydrate event before passing into LNURL callback
|
2024-01-24 15:47:19 -06:00 |
Alex Gleason
|
b4735d1dd3
|
cleanEvent -> dehydrateEvent
|
2024-01-24 15:46:45 -06:00 |
Alex Gleason
|
0fc8143889
|
Get rid of unnecessary memorelay module, replace with NCache
|
2024-01-23 17:50:33 -06:00 |
Alex Gleason
|
2369030ff0
|
Upgrade NLib, remove unnecessary generics
|
2024-01-23 17:18:44 -06:00 |
Alex Gleason
|
5b24b7ad39
|
Pass Request signal down from API controllers
|
2024-01-23 15:58:59 -06:00 |
Alex Gleason
|
77f2e2d940
|
pipeline: pass signals all the way down
|
2024-01-23 14:35:35 -06:00 |
Alex Gleason
|
c6062874bd
|
Implement NStore interface from NLib
|
2024-01-23 14:06:51 -06:00 |
Alex Gleason
|
67a52c3b7d
|
Clean event before publishing
|
2024-01-23 12:15:48 -06:00 |
Alex Gleason
|
0b6874bb44
|
EventsDB: normalize the event to only NIP-01 event properties
|
2024-01-23 12:12:34 -06:00 |
Alex Gleason
|
aaf01462c1
|
Update code to use new DittoEvent and DittoFilter. Event -> NostrEvent
|
2024-01-23 12:07:22 -06:00 |
Alex Gleason
|
f58c2098f0
|
Add DittoEvent and DittoFilter dedicated interface modules
|
2024-01-23 11:17:31 -06:00 |
Alex Gleason
|
b971b5274d
|
Remove UserData type, hydrate the event instead
|
2024-01-23 10:56:17 -06:00 |
Alex Gleason
|
240b7d6a14
|
Index P tag of zap receipts
|
2024-01-22 15:39:02 -06:00 |
Alex Gleason
|
8494bd5f67
|
pipeline: pass signal down to everything that accepts it
|
2024-01-22 14:31:52 -06:00 |
Alex Gleason
|
c5e7b3bf0c
|
pipeline: clean up zaps function
|
2024-01-22 14:24:37 -06:00 |
Alex Gleason
|
13c50c71bd
|
Cache the LNURL response
|
2024-01-22 12:42:39 -06:00 |
Alex Gleason
|
d73fa7a311
|
Start simplifying LNURL code with NLib
|
2024-01-22 12:35:30 -06:00 |
Alex Gleason
|
0a1b6cdf4f
|
Merge remote-tracking branch 'origin/main' into zaps
|
2024-01-22 12:00:55 -06:00 |
Alex Gleason
|
fc3934fa90
|
fetchWorker: wait for the worker to be ready before using it
|
2024-01-22 11:55:34 -06:00 |
Alex Gleason
|
dc6a6ccb5f
|
fetch.test: don't sleep at the beginning? I'm really confused why it's not working
|
2024-01-22 11:48:52 -06:00 |
Alex Gleason
|
4bec5f6f78
|
Try using httpbin in tests, cuz CI runner is hanging on example.com
|
2024-01-22 11:45:22 -06:00 |
Alex Gleason
|
8eccdafa64
|
Improve the NIP-05 cache
|
2024-01-21 20:22:11 -06:00 |
Alex Gleason
|
9a039bd021
|
firehose: ingest zap receipts
|
2024-01-17 11:54:28 -06:00 |
Alex Gleason
|
b5a1220159
|
Publish NWC event from pipeline
|
2024-01-16 18:11:19 -06:00 |
Alex Gleason
|
40d3a46c16
|
pipeline: use fetchWorker properly for zaps, pass signal
|
2024-01-15 17:56:03 -06:00 |
Alex Gleason
|
24d1ff4aec
|
lnurl: increase default limit to 2000
|
2024-01-15 17:46:23 -06:00 |
Alex Gleason
|
455459bea7
|
pipeline: process zap requests by local users
|
2024-01-15 17:14:08 -06:00 |
Alex Gleason
|
826a244f47
|
Add status zap endpoint, publish zap request to pipeline
|
2024-01-15 16:43:56 -06:00 |
Alex Gleason
|
786d9914af
|
Add LNURL utils
|
2024-01-15 16:20:10 -06:00 |
Alex Gleason
|
e16e81da86
|
Add a CLI task to publish events as the Ditto admin
|
2024-01-15 12:40:39 -06:00 |
Alex Gleason
|
58c2c8eb7f
|
EventsDB: index badges in FTS
|
2024-01-13 18:18:56 -06:00 |
Alex Gleason
|
8b3aee7e48
|
Merge branch 'admin-delete' into 'main'
Let admins delete events
See merge request soapbox-pub/ditto!99
|
2024-01-12 01:33:31 +00:00 |
Alex Gleason
|
e3631104a6
|
pipeline: fix admin event deletion
|
2024-01-11 19:11:04 -06:00 |
Alex Gleason
|
c4920ccb2e
|
pipeline: let the admin pubkey delete anything with kind 5's
|
2024-01-11 19:05:34 -06:00 |
Alex Gleason
|
31a6d0305f
|
Add admin status deletion endpoint
|
2024-01-11 18:47:26 -06:00 |
Alex Gleason
|
a08e698f29
|
unfurl: improve failure debug
|
2024-01-11 18:09:59 -06:00 |
Alex Gleason
|
db3ee13baa
|
Implement Pleroma config GET controller
|
2024-01-08 18:01:24 -06:00 |
Alex Gleason
|
8c972dbabd
|
Actually implement Pleroma's configs API correctly (wow!)
|
2024-01-08 17:34:07 -06:00 |
Alex Gleason
|
15810c1935
|
Configure server from the kind 0 event of the admin user
|
2024-01-08 16:53:46 -06:00 |
Alex Gleason
|
937ae1eab6
|
Refactor EventStore to use a more Set-like interface
|
2024-01-08 15:18:01 -06:00 |
Alex Gleason
|
f8a0698c3a
|
Reqmeister: encounter -> storeEvent
|
2024-01-07 16:37:06 -06:00 |
Alex Gleason
|
a10108e109
|
Move client to a PoolStore storage class
|
2024-01-07 15:15:20 -06:00 |
Alex Gleason
|
20928cdf82
|
Reqmeister: pass client as an opt
|
2024-01-07 14:58:17 -06:00 |
Alex Gleason
|
ae44c08a2a
|
Move Reqmeister to a dedicated storage class
|
2024-01-07 14:54:33 -06:00 |
Alex Gleason
|
5d91c4b507
|
EventsDB: normalizeFilters
|
2024-01-05 18:06:51 -06:00 |
Alex Gleason
|
957b224453
|
adminAccountsController: support pagination, probably
|
2024-01-05 17:11:32 -06:00 |
Alex Gleason
|
e1a95b2319
|
adminAccountsController: fix hydrating accounts
|
2024-01-05 16:33:05 -06:00 |
Alex Gleason
|
46b7185f7b
|
adminAccountsController: bail if querying by unsupported params
|
2024-01-05 16:05:18 -06:00 |
Alex Gleason
|
5bd03bdcaa
|
Support admin accounts endpoint (first pass)
|
2024-01-05 15:35:55 -06:00 |
Alex Gleason
|
714391b807
|
SearchStore: only use the external search if the socket is open
|
2024-01-05 12:09:12 -06:00 |
Alex Gleason
|
89af83c660
|
search: fix abort signals
|
2024-01-04 02:09:23 -06:00 |
Alex Gleason
|
412f71599a
|
Add hydrator module to hydrate relationships on events
|
2024-01-04 01:44:56 -06:00 |
Alex Gleason
|
d170eb6d8e
|
SearchStorage: make author relations work
|
2024-01-04 00:52:55 -06:00 |
Alex Gleason
|
6d80b43335
|
SearchStore: bail early for empty filters
|
2024-01-04 00:23:37 -06:00 |
Alex Gleason
|
2595f1aadf
|
SearchStorage: try fetching authors
|
2024-01-04 00:20:22 -06:00 |
Alex Gleason
|
ee7347df10
|
SearchStore works!
|
2024-01-04 00:07:57 -06:00 |
Alex Gleason
|
9c0a16ebcd
|
client: use EventSet, normalizeFilters
|
2024-01-03 22:20:30 -06:00 |
Alex Gleason
|
b71124cc30
|
EventSet: event2 -> target
|
2024-01-03 22:15:20 -06:00 |
Alex Gleason
|
96dd635661
|
@/store.ts -> @/storages/types.ts
|
2024-01-03 22:02:34 -06:00 |
Alex Gleason
|
b3e4b79439
|
Delete db/events.ts, db/memorelay.ts, move to @/storages.ts
|
2024-01-03 21:56:41 -06:00 |
Alex Gleason
|
a4bc951eee
|
Add `supportedNips` to all storages
|
2024-01-03 21:39:54 -06:00 |
Alex Gleason
|
8ab0fefbf2
|
Memorelay: use EventSet data structure
|
2024-01-03 21:19:44 -06:00 |
Alex Gleason
|
384bb729b4
|
EventsDB: fix `this` binding of usersQuery
|
2024-01-03 20:59:46 -06:00 |
Alex Gleason
|
939eeae25a
|
Add Optimizer storage with EventSet
|
2024-01-03 20:22:02 -06:00 |
Alex Gleason
|
48ce1ba6c9
|
Memorelay: do some premature optimizations
|
2024-01-03 18:51:14 -06:00 |
Alex Gleason
|
c235fa6123
|
Memorelay: normalize filters
|
2024-01-03 18:15:28 -06:00 |
Alex Gleason
|
5bffffe07b
|
Add a function to calculate the intrinsic limit of a filter
|
2024-01-03 17:20:29 -06:00 |
Alex Gleason
|
80e6147927
|
Make reqmeister a storage
|
2024-01-03 15:28:03 -06:00 |
Alex Gleason
|
b5c23cf23f
|
Move EventsDB into storages
|
2024-01-03 14:45:56 -06:00 |
Alex Gleason
|
cfe44876af
|
Memorelay: add supportedNips property
|
2024-01-03 14:06:13 -06:00 |
Alex Gleason
|
f667ba3c69
|
Memorelay: reimplement by just looping events with matchFilters
|
2024-01-03 13:55:22 -06:00 |
Alex Gleason
|
a1dad3a0c5
|
Memorelay: #events -> #cache
|
2024-01-03 12:54:38 -06:00 |
Alex Gleason
|
24c405b9b9
|
Add Memorelay storages module
|
2024-01-03 12:54:07 -06:00 |
Alex Gleason
|
792e47f0f7
|
renderStatus: fix repost and reaction events being switched
|
2024-01-01 18:39:22 -06:00 |
Alex Gleason
|
462b5b095c
|
debug: add debug to queries
|
2024-01-01 18:06:10 -06:00 |
Alex Gleason
|
777ac39ec7
|
debug: improve output for nip05
|
2024-01-01 17:47:15 -06:00 |
Alex Gleason
|
d13b7435a7
|
debug: minimize socket close output
|
2024-01-01 17:30:01 -06:00 |
Alex Gleason
|
43359f787b
|
web.ts -> api.ts
|
2024-01-01 17:03:32 -06:00 |
Alex Gleason
|
1620668d5a
|
debug: log events signed through the API
|
2024-01-01 17:02:09 -06:00 |
Alex Gleason
|
57d7f7ff40
|
Support `pinned` param in accountStatusesController
|
2024-01-01 16:30:11 -06:00 |
Alex Gleason
|
3341d6aedd
|
Add pinController, unpinController
|
2024-01-01 16:23:08 -06:00 |
Alex Gleason
|
9841d193eb
|
Ensure bookmarks are displayed reverse-chronologically
|
2024-01-01 14:51:04 -06:00 |
Alex Gleason
|
5f6715db46
|
Add unbookmarkController
|
2024-01-01 14:35:46 -06:00 |
Alex Gleason
|
b98487196f
|
Set `bookmarked` property of statuses, optimize status querying, fix relationships wrong assumption
|
2024-01-01 14:31:45 -06:00 |
Alex Gleason
|
5af0e0992f
|
db/events: ensure local bookmarks get indexed
|
2024-01-01 14:21:05 -06:00 |
Alex Gleason
|
c8e2707704
|
Add bookmarkController, refactor generic views
|
2024-01-01 14:07:39 -06:00 |
Alex Gleason
|
69a44f9d2b
|
Add bookmarkController
|
2024-01-01 13:45:07 -06:00 |
Alex Gleason
|
38241d011d
|
Add missing newline
|
2024-01-01 13:08:32 -06:00 |
Alex Gleason
|
3807ca175f
|
Add unblock and unfollow endpoints
|
2024-01-01 12:50:09 -06:00 |
Alex Gleason
|
5b7c3a1d5e
|
Support GET /api/v1/blocks
|
2024-01-01 12:44:50 -06:00 |
Alex Gleason
|
84eb4cec2e
|
Add blockController, fix bugs
|
2023-12-31 23:35:37 -06:00 |
Alex Gleason
|
6d1375ba59
|
Optimize the relationships controller, support block relationships
|
2023-12-31 22:56:21 -06:00 |
Alex Gleason
|
63fb934220
|
setTag -> addTag
|
2023-12-31 22:06:35 -06:00 |
Alex Gleason
|
8023cfa7b2
|
Use a cleaner API for updating lists
|
2023-12-31 22:01:57 -06:00 |
Alex Gleason
|
e341ec7b36
|
db/events: respect the signal
|
2023-12-31 21:01:30 -06:00 |
Alex Gleason
|
f665c5f825
|
Remove isFollowing util
|
2023-12-31 20:31:06 -06:00 |
Alex Gleason
|
dc27ee05d4
|
Create `updateListEvent` helper function
|
2023-12-31 20:13:49 -06:00 |
Alex Gleason
|
335f7dc281
|
Add tags module
|
2023-12-31 14:05:55 -06:00 |
Alex Gleason
|
e5c8f8c146
|
Bump the timeout a bit when fetching an individual status
|
2023-12-31 12:48:49 -06:00 |
Alex Gleason
|
8c52ae80e4
|
reqmeister: fix eventhandler memory leak, fix promise resolving too soon, respect the signal
|
2023-12-31 12:47:28 -06:00 |
Alex Gleason
|
952b3f0d66
|
Fix http logger
|
2023-12-31 12:47:00 -06:00 |
Alex Gleason
|
e869651c63
|
users: remove duplicate debug call
|
2023-12-30 09:58:12 -06:00 |
Alex Gleason
|
79349124bc
|
Prevent duplicate usernames from being added
|
2023-12-30 09:57:33 -06:00 |
Alex Gleason
|
529bc11da1
|
Support replaceable events and parameterized replaceable events (delete old versions upon insert)
|
2023-12-29 23:21:05 -06:00 |
Alex Gleason
|
38238cc4a8
|
Fix db/events test, remove unnecessary AbortSignal from pipeline
|
2023-12-29 21:21:56 -06:00 |
Alex Gleason
|
3472428da8
|
relay: fix wrong function name
|
2023-12-29 21:12:57 -06:00 |
Alex Gleason
|
f6a8ab570f
|
db/events: simplify it further
|
2023-12-29 21:08:59 -06:00 |
Alex Gleason
|
b39902d322
|
Load local timeline a lot faster by using leftJoin instead of innerJoin, wow
|
2023-12-29 21:05:31 -06:00 |
Alex Gleason
|
9492b7654f
|
db/events: fix the `local` filter
|
2023-12-29 20:53:01 -06:00 |
Alex Gleason
|
358396fdac
|
Drop users table
|
2023-12-29 17:01:23 -06:00 |
Alex Gleason
|
13bf936088
|
Convert users to Events
|
2023-12-29 16:37:18 -06:00 |
Alex Gleason
|
4ce51014de
|
events.test: fix type error
|
2023-12-29 13:53:09 -06:00 |
Alex Gleason
|
56373c4ce3
|
Refactor memorelay as an EventStore
|
2023-12-29 13:35:57 -06:00 |
Alex Gleason
|
ccfdbfeb8d
|
Rework client as EventStore
|
2023-12-29 13:22:51 -06:00 |
Alex Gleason
|
e6c8d1dad9
|
Add an EventStore interface, refactor eventsDB
|
2023-12-29 13:12:16 -06:00 |
Alex Gleason
|
5ed2ecbabd
|
Remove mixer module
|
2023-12-29 12:43:59 -06:00 |
Alex Gleason
|
e01383629e
|
unfurl: fix missing import, debug errors
|
2023-12-28 15:55:48 -06:00 |
Alex Gleason
|
69d93b7cab
|
Merge remote-tracking branch 'origin/main' into pool-worker
|
2023-12-28 14:22:51 -06:00 |
Alex Gleason
|
08da26b12a
|
reqmeister: accept `signal`
|
2023-12-28 13:41:04 -06:00 |
Alex Gleason
|
2d19ab207e
|
Add memorelay.test.ts
|
2023-12-28 13:36:50 -06:00 |
Alex Gleason
|
33eead2148
|
Add filter.test.ts
|
2023-12-28 13:26:41 -06:00 |
Alex Gleason
|
b3c7e22052
|
memorelay: increase LRU limits
|
2023-12-28 12:15:24 -06:00 |
Alex Gleason
|
da6738a405
|
db/events: debug getFilters -> REQ
|
2023-12-28 12:07:49 -06:00 |
Alex Gleason
|
2b1e97ee1b
|
queries: get author from memory when possible
|
2023-12-28 00:39:05 -06:00 |
Alex Gleason
|
c2b25bc798
|
queries: refactor getEvent, getAuthor
|
2023-12-28 00:27:25 -06:00 |
Alex Gleason
|
96e6bd18b4
|
queries: pull from memorelay when applicable, optimize
|
2023-12-28 00:15:51 -06:00 |
Alex Gleason
|
f75cd21159
|
queries: make getAuthor use memorelay
|
2023-12-27 23:55:42 -06:00 |
Alex Gleason
|
d40b4a509e
|
pipeline: use memorelay for encounters
|
2023-12-27 23:36:01 -06:00 |
Alex Gleason
|
acffdd7fb8
|
memorelay: insertEvent
|
2023-12-27 23:22:24 -06:00 |
Alex Gleason
|
5398042156
|
Add memorelay module
|
2023-12-27 22:49:35 -06:00 |
Alex Gleason
|
84a083bc7c
|
debug: stringify tags
|
2023-12-27 22:27:05 -06:00 |