kolaente
ce1d7778c7
fix(export): make export work with project views and new task positions
2024-04-13 21:07:06 +02:00
kolaente
77e95642a9
fix(tasks): make fetching tasks in buckets via typesense work
2024-04-13 17:52:47 +02:00
kolaente
a5d02380a3
fix(typesense): make fetching task positions per view more efficient
2024-04-13 17:26:38 +02:00
kolaente
3519b8b2fe
fix(tasks): index and order by task position when using typesense
2024-04-13 17:19:27 +02:00
kolaente
cb648e5ad8
fix(typesense): fix reindexing views and positions in typesense
2024-04-13 16:38:45 +02:00
kolaente
75f830457b
fix(comments): order comments by created timestamp instead of id
...
Partially resolves https://community.vikunja.io/t/trello-import-comments-and-assignments/2174/14
2024-04-13 14:45:12 +02:00
kolaente
6e2b540394
fix(migration): import task comments with original timestamps
...
Partially resolves https://community.vikunja.io/t/trello-import-comments-and-assignments/2174/14
2024-04-13 14:44:55 +02:00
kolaente
500b761fe6
fix(projects): do not return parent project id when authenticating as link share
...
Related to https://community.vikunja.io/t/vikunja-freezes/2246
Related to https://github.com/go-vikunja/vikunja/issues/233
2024-04-12 18:02:39 +02:00
kolaente
191a476823
fix(notifications): only sanitze html content in notifications, do not convert it to markdown
...
Resolves https://community.vikunja.io/t/trello-import-html-mails/2197
2024-04-07 13:34:53 +02:00
kolaente
c1d06c5e5a
fix(projects): do not return parent project id of parents where the user does not have access
...
This caused the frontend to not show such projects, throwing errors in the process and sometimes made it hang.
2024-04-07 12:10:20 +02:00
kolaente
2f6b395334
feat(kanban): set task position to 0 (top) when it is moved into the done bucket automatically after marking it done
2024-04-06 14:35:05 +02:00
kolaente
1cd5dd2b2f
fix: lint
2024-04-06 14:12:08 +02:00
kolaente
521300613f
fix: update task in typesense when adding a label or assignee to them
...
Resolves https://community.vikunja.io/t/typesense-only-works-if-i-re-index/2212
2024-04-06 14:04:04 +02:00
kolaente
20e2314128
fix(filters): enclose values with a slash in them as strings so that date math values work
...
Previously, in a filter like "due_date = now/d", the / was parsed as the beginning of a comment, but as it did not contain the full value, this is an invalid comment, resulting in an error message.
Resolves https://community.vikunja.io/t/filter-setting-s/1791/12
2024-04-06 12:08:57 +02:00
waza-ari
f0d695e789
fix(views): remove default filter from frontend, apply by default to new list views instead ( #2240 )
...
Fixes #2234
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2240
Reviewed-by: konrad <k@knt.li>
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-04-02 13:49:38 +00:00
kolaente
8a6e3d5bd7
fix(views): use correct assertion in test
2024-04-02 12:42:07 +02:00
kolaente
81fe8391e4
fix(project): load full project after creating a project
...
When a new project was created, it contained all details already. This led to duplicated views and overridden attributes in the response.
Resolves https://kolaente.dev/vikunja/vikunja/issues/2242
2024-03-29 19:28:17 +01:00
kolaente
89e37b88d9
fix(views): update all fields when updating a view
...
Resolves https://kolaente.dev/vikunja/vikunja/issues/2241
2024-03-29 18:19:16 +01:00
kolaente
97b7592e7c
fix(views): do not map bucket id from xorm
2024-03-20 10:41:58 +01:00
kolaente
d635fd2dd3
fix(projects): remove done bucket id field from projects struct
2024-03-20 09:21:40 +01:00
kolaente
fee75e55a3
fix(views): stable assertion for bucket in tests
2024-03-19 17:27:03 +01:00
kolaente
fa137b1ffc
fix(views): include order by fields in distinct clause when sorting by task position
2024-03-19 17:05:12 +01:00
kolaente
e7d6ee2392
fix(views): update done status of recurring tasks
2024-03-19 17:04:39 +01:00
kolaente
62ff05695f
fix(views): kanban test assertions
2024-03-19 16:59:46 +01:00
kolaente
6f51b56589
fix: lint
2024-03-19 16:49:39 +01:00
kolaente
165d291cd5
fix(views): reset bucket when moving tasks between projects
2024-03-19 14:16:05 +01:00
kolaente
e940db6d32
fix(views): return only tasks when the bucket id was already specified
2024-03-19 13:55:28 +01:00
kolaente
30b41bd143
fix(views): lint
2024-03-19 00:47:51 +01:00
kolaente
f3cdd7d15f
fix(views): import
2024-03-19 00:47:51 +01:00
kolaente
8b90eb4a15
fix(views): integration tests
2024-03-19 00:47:51 +01:00
kolaente
803f58f402
fix(views): return correct error
2024-03-19 00:47:51 +01:00
kolaente
b7b3169169
fix(views): count task buckets
2024-03-19 00:47:51 +01:00
kolaente
409f9a0cc6
fix(views): test assertions
2024-03-19 00:47:51 +01:00
kolaente
9075a45cb8
fix(views): update test fixtures for new structure
2024-03-19 00:47:51 +01:00
kolaente
d4bdd2d4e8
fix(views): duplicate all views and related entities when duplicating a project
2024-03-19 00:47:51 +01:00
kolaente
9cc273d9bd
fix(views): move all tasks to the default bucket when deleting a bucket
2024-03-19 00:47:51 +01:00
kolaente
0f60a92873
fix(views): make kanban tests work again
2024-03-19 00:47:51 +01:00
kolaente
24fa3b206f
fix(views): create view
2024-03-19 00:47:50 +01:00
kolaente
433584813a
fix(views): view deletion
2024-03-19 00:47:50 +01:00
kolaente
3ec3bb76af
fix(views): make parsing work
2024-03-19 00:47:50 +01:00
kolaente
004f1e06bb
fix(views): do not return kanban tasks multiple times
2024-03-19 00:47:50 +01:00
kolaente
27cb6e3372
fix(views): make bucket edit work
2024-03-19 00:47:50 +01:00
kolaente
445f1c06fa
fix(views): make bucket creation work again
2024-03-19 00:47:50 +01:00
kolaente
7368a51f18
fix(views): make setting task position in saved filters work
2024-03-19 00:47:49 +01:00
kolaente
e1774cc49a
feat(views): show tasks on kanban board in saved filter
2024-03-19 00:47:49 +01:00
kolaente
61e27ae3eb
feat(views): create task bucket relation when creating a new bucket
2024-03-19 00:47:49 +01:00
kolaente
7f1788eba9
fix(views): get tasks in saved filter
2024-03-19 00:47:49 +01:00
kolaente
5451ddf58d
fix(views): return tasks directly or in buckets, no matter if accessing via user or link share
2024-03-19 00:47:49 +01:00
kolaente
f364f3bec8
feat(views): return position when retriving tasks
2024-03-19 00:47:48 +01:00
kolaente
786e67f692
feat(views): save task position
2024-03-19 00:47:48 +01:00
kolaente
398c9f1056
fix(views): return tasks in their buckets
2024-03-19 00:47:48 +01:00
kolaente
cb111df2b7
fix(views): make fetching tasks in kanban buckets through view actually work
2024-03-19 00:47:48 +01:00
kolaente
73e5483e87
fix(views): do not break filters when combining them with view filters
2024-03-19 00:47:48 +01:00
kolaente
6913334b17
fix(views): correctly fetch project when fetching tasks
2024-03-19 00:47:48 +01:00
kolaente
ee6ea03506
feat(views): sort by position
2024-03-19 00:47:47 +01:00
kolaente
43f24661d7
feat(views): save view and position in Typesense
2024-03-19 00:47:47 +01:00
kolaente
5641da27f7
feat(views): save position in Typesense
2024-03-19 00:47:47 +01:00
kolaente
14353b24d7
feat(views): set default position
2024-03-19 00:47:47 +01:00
kolaente
ca4e3e01c5
feat(views): recalculate all positions when updating
2024-03-19 00:47:47 +01:00
kolaente
8ce476491e
feat(views): only update the bucket when necessary
2024-03-19 00:47:47 +01:00
kolaente
f2a0d69670
feat(views)!: make updating a bucket work again
2024-03-19 00:47:47 +01:00
kolaente
a13276e28e
feat(views)!: decouple bucket <-> task relationship
2024-03-19 00:47:47 +01:00
kolaente
9cf84646a1
feat(views)!: move done and default bucket setting to view
2024-03-19 00:47:47 +01:00
kolaente
006f932dc4
feat(views)!: decouple bucket CRUD from projects
2024-03-19 00:47:47 +01:00
kolaente
0a3f45ab11
feat(views): decouple buckets from projects
2024-03-19 00:47:47 +01:00
kolaente
d1d07f462c
feat(views): sort tasks by their position relative to the view they're in
2024-03-19 00:47:46 +01:00
kolaente
2502776460
feat(views)!: move task position handling to its own crud entity
...
BREAKING CHANGE: the position of tasks now can't be updated anymore via the task update endpoint. Instead, there is a new endpoint which takes the project view into account as well.
2024-03-19 00:47:46 +01:00
kolaente
238baf86f7
feat(views)!: return tasks in buckets by view
...
BREAKING CHANGE: tasks in their bucket are now only retrievable via their view. The /project/:id/buckets endpoint now only returns the buckets for that project, which is more in line with the other endpoints
2024-03-19 00:47:46 +01:00
kolaente
652bf4b4ed
feat(views): (un)marshal custom project view mode types
2024-03-19 00:47:46 +01:00
kolaente
a9020e976d
feat(views): add bucket configuration mode
2024-03-19 00:47:46 +01:00
kolaente
38457aaca5
feat(views): use project id when fetching views
2024-03-19 00:47:46 +01:00
kolaente
98b7cc9254
feat(views): do not override filters in view
2024-03-19 00:47:46 +01:00
kolaente
4149ebed3a
feat(views): create default views when creating a filter
2024-03-19 00:47:46 +01:00
kolaente
2096fc5274
feat(views): return tasks in a view
2024-03-19 00:47:46 +01:00
kolaente
e4b1a5d2db
feat(views): create default 4 default view for projects
2024-03-19 00:47:46 +01:00
kolaente
2fa3e2c2f5
feat(views): return views with their projects
2024-03-19 00:47:46 +01:00
kolaente
b39c5580c2
feat(views): add crud handlers and routes for views
2024-03-19 00:47:45 +01:00
kolaente
6bdb33fb46
feat(views): add new model and migration
2024-03-19 00:47:45 +01:00
kolaente
8c826c44d2
fix(webhooks): fire webhooks set on parent projects as well
2024-03-13 19:41:34 +01:00
kolaente
5b2b7f7bdc
fix(kanban): reset done and default bucket when the bucket itself is deleted
...
Resolves https://github.com/go-vikunja/vikunja/issues/234
2024-03-12 22:23:35 +01:00
kolaente
a5c51d4b1e
feat: emoji reactions for tasks and comments ( #2196 )
...
This PR adds reactions for tasks and comments, similar to what you can do on Gitea, GitHub, Slack and plenty of other tools.
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2196
Co-authored-by: kolaente <k@knt.li>
Co-committed-by: kolaente <k@knt.li>
2024-03-12 19:25:58 +00:00
kolaente
09d5128050
fix(filters): don't escape valid escaped in queries
2024-03-11 17:02:04 +01:00
kolaente
a66e26678e
feat(filters): pass timezone down when filtering with relative date math
...
Resolves https://community.vikunja.io/t/my-vikunja-instance-creates-tasks-with-due-date-time-of-9am-for-tasks-with-the-word-today-word-in-it/2105/8
2024-03-11 16:28:25 +01:00
kolaente
6fc3d1e98f
fix: lint
2024-03-11 15:42:09 +01:00
kolaente
3896c680d3
fix(filters): do not require string for in comparator
2024-03-11 14:36:59 +01:00
waza-ari
6c98052176
fix(teams): fix duplicate teams being shown when new public team visibility feature is enabled ( #2187 )
...
Due to the `INNER JOIN` on the `team_members` table and the new `OR` conditions allowing teams with the `isPublic` flag set to `true`, teams are returned multiple times. As we're only after the teams, a simple distinct query should fix the issue.
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2187
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-03-10 21:42:34 +00:00
waza-ari
ffa82556e0
feat(teams): add public flags to teams to allow easier sharing with other teams ( #2179 )
...
Resolves #2173
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2179
Reviewed-by: konrad <k@knt.li>
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-03-10 14:04:32 +00:00
renovate
d7fdefcead
chore(deps): update golangci/golangci-lint docker tag to v1.56.2 ( #2099 )
...
Co-authored-by: kolaente <k@knt.li>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2099
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2024-03-10 13:47:19 +00:00
kolaente
654e95d99f
fix(filters): test fixture
2024-03-09 20:21:05 +01:00
kolaente
4e6e0608c7
fix(filters): lint
2024-03-09 20:08:17 +01:00
kolaente
05d3bb4fb6
fix(filters): swagger docs for kanban buckets
2024-03-09 19:07:31 +01:00
kolaente
d0b762d761
docs(filter): add filter query explanation
2024-03-09 19:07:31 +01:00
kolaente
28fa2c517a
feat(filters): make new filter syntax work with Typesense
2024-03-09 19:06:48 +01:00
kolaente
bc6d812eb0
fix(filters): lint
2024-03-09 19:06:35 +01:00
kolaente
87c027aafd
chore(filters): cleanup old variables
2024-03-09 19:06:35 +01:00
kolaente
65e1357705
fix(tests): make filter tests work again
2024-03-09 19:06:35 +01:00
kolaente
eebfee73d3
fix(filter): correctly filter for buckets
2024-03-09 19:06:35 +01:00
kolaente
ef1cc9720c
feat(filter): add in keyword
2024-03-09 19:06:35 +01:00
kolaente
c6b682507a
feat(filter): add better error message when passing an invalid filter expression
2024-03-09 19:06:35 +01:00
kolaente
9d3fb6f81d
chore(filter): cleanup
2024-03-09 19:06:35 +01:00
kolaente
76ed2cff5f
feat(filter): nesting
2024-03-09 19:06:35 +01:00
kolaente
e43349618b
feat(filter): more tests
2024-03-09 19:06:35 +01:00
kolaente
9624cc9e97
fix(filter): translate all tests
2024-03-09 19:06:35 +01:00
kolaente
764bc15d49
fix(filter): allow filtering for "project"
2024-03-09 19:06:34 +01:00
kolaente
3fc4aaa2a1
fix(filter): allow filtering on "in" condition
2024-03-09 19:06:34 +01:00
kolaente
9f73e2c5f9
fix(filter): don't crash on empty filter
2024-03-09 19:06:34 +01:00
kolaente
c1e137d8ee
fix(filter): make sure single filter condition works
2024-03-09 19:06:34 +01:00
kolaente
de320aac72
feat(filters): basic text filter works now
2024-03-09 19:06:34 +01:00
kolaente
307ffe11c4
feat(filters): very basic filter parsing
2024-03-09 19:06:31 +01:00
waza-ari
d69fc28125
fix(openid): OIDC teams should not have admins ( #2161 )
...
This PR fixes an issue discussed in #2152 . Before this PR, the user who triggered team creation automatically got the admin flag set for this group, which makes perfect sense for the normal UI workflow. OIDC managed teams cannot be edited in Vikunja, and they're created automatically by the first user logging in having this team assigned. This PR therefore makes sure that OIDC managed team members do not receive the admin flag.
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2161
Reviewed-by: konrad <k@knt.li>
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-03-05 22:08:39 +00:00
waza-ari
a3154e805c
fix(auth): use (issuer, name) to check for uniqueness of oidc teams ( #2152 )
...
The change introduced in #2150 introduces a bug where a Team would be re-created every time a user logs in, as the check if a team already exists was based on both the unique `oidcID` and the `name`. This PR proposes to only base the check on the ID, as this should be unique.
Co-authored-by: Daniel Herrmann <daniel.herrmann1@gmail.com>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/2152
Reviewed-by: konrad <k@knt.li>
Co-authored-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
Co-committed-by: waza-ari <daniel.herrmann@makerspace-darmstadt.de>
2024-03-04 20:26:45 +00:00
kolaente
ac8751e1be
fix(task): move done tasks to the done bucket when they are moved between projects and the new project has a done bucket
2024-03-03 18:13:47 +01:00
kolaente
fe27dd59ad
feat(subscription): use a recursive cte to fetch subscriptions of parent projects
...
Testing this locally resulted in improved response times from ~50ms to ~20ms when creating a project. It looks like even though the code running these sql queries uses different go routines, they affect each other (caused by IO or context switching?)
2024-03-03 15:34:18 +01:00
kolaente
22933dac4a
fix(project): typo in table name
2024-03-03 12:47:00 +01:00
kolaente
fe02f4da2c
fix(project): check for project nesting cycles with a single recursive cte instead of a loop
2024-03-03 11:40:43 +01:00
kolaente
4f1f96f1e9
chore(auth): refactor openid team creation
2024-03-02 15:22:37 +01:00
kolaente
10ff864e0c
fix(projects): load projects only one when fetching subscriptions for a bunch of projects at once
...
This change ensures already loaded projects are passed down when fetching their subscription instead of re-loading each project with a single sql statement. When loading all projects, this meant all projects were loaded twice, which was highly inefficient. This roughly added 25ms to each request, assuming the per page limit was maxed out at 50 projects.
Empirical testing shows this change reduces load times by ~20ms. Because the request is already pretty fast, this is ~30% of the overall request time, making the loading of projects now even faster
2024-03-02 14:27:11 +01:00
kolaente
a3932a0a19
fix(projects): return correct project pagination count
2024-03-02 13:30:34 +01:00
viehlieb
ed4da96ab1
feat: assign users to teams via OIDC claims ( #1393 )
...
This change adds the ability to sync teams via a custom openid claim. Vikunja will automatically create and delete teams as necessary, it will also add and remove users when they log in. These teams are fully managed by Vikunja and cannot be updated by a user.
Co-authored-by: kolaente <k@knt.li>
Reviewed-on: https://kolaente.dev/vikunja/vikunja/pulls/1393
Resolves https://kolaente.dev/vikunja/vikunja/issues/1279
Resolves https://github.com/go-vikunja/vikunja/issues/42
Resolves https://kolaente.dev/vikunja/vikunja/issues/950
Co-authored-by: viehlieb <pf@pragma-shift.net>
Co-committed-by: viehlieb <pf@pragma-shift.net>
2024-03-02 08:47:10 +00:00
kolaente
5b70609ba7
fix: usage of limit and order by usage in recursive cte
2024-02-28 14:35:09 +01:00
kolaente
6b1e67485b
feat: fetch all projects with a recursive cte instead of recursive query
...
This change modifies the fetching of all projects to use a recursive common table expression instead of recursively calling the method.
2024-02-28 13:42:45 +01:00
kolaente
415c6380a5
feat(api tokens): add task attachment to api scopes
...
This explicitly adds download and upload of task attachments. Because these are not handled with the usual CRUDables, they were not picked up automatically.
Resolves https://github.com/go-vikunja/vikunja/issues/112
2024-02-14 15:00:16 +01:00
kolaente
8752ae2a0b
fix(webhook): fetch all event details before sending the webhook
...
Resolves https://community.vikunja.io/t/webhook-comment-data-issues/1952
2024-02-10 14:15:32 +01:00
kolaente
7edb53ca12
fix(export): don't crash when an exported file does not exist
...
Related to https://github.com/go-vikunja/vikunja/issues/110
2024-02-10 13:45:12 +01:00
kolaente
5ab9fb89bb
fix(tasks): check for cycles during creation of task relations and prevent them
2024-02-10 13:30:41 +01:00
kolaente
119c68be9d
feat: rename frontend url config to public url
2024-02-09 14:41:55 +01:00
kolaente
b95b92a23a
fix(filters): add explicit check for string slice filter
...
Resolves https://github.com/go-vikunja/api/issues/109
2024-02-05 22:08:17 +01:00
kolaente
8efdc96d02
chore(filters): log type if unknown filter type
2024-02-01 16:19:22 +01:00
kolaente
7f46914d5e
fix(project): pass user id to error message
2024-01-31 13:50:21 +01:00
kolaente
96b4f2d1db
fix(projects): don't remove parent project id if the parent project is available in the same run
...
Resolves https://github.com/go-vikunja/frontend/issues/139
2024-01-28 15:28:08 +01:00
kolaente
d9875e476c
fix(assignees): make sure task assignee created event contains the full task
2024-01-28 13:23:27 +01:00
kolaente
e4fec01d52
fix(assignees): subscribe assigned users directly to the task, not async
...
Resolves https://community.vikunja.io/t/richer-email-notifications/1891
2024-01-28 13:15:43 +01:00
kolaente
b2970c6c04
fix(assignees): prevent double notifications for assignees
2024-01-28 13:11:50 +01:00
kolaente
e03920b84a
fix(assignees): improve wording for assignee emails
2024-01-28 13:11:37 +01:00
kolaente
a20f6ac815
fix(task): delete the task after all related attributes to prevent task not found errors
2024-01-28 12:23:25 +01:00
kolaente
1630e4fc08
fix: tests
2024-01-28 11:52:16 +01:00
kolaente
90ad975ca0
fix(typesense): update tasks in Typesense directly when the change happened
...
Resolves https://community.vikunja.io/t/no-filters-working-assignee-date-task-done-etc/1910
2024-01-28 11:47:17 +01:00
kolaente
ae9b382963
fix(webhooks): make sure all events with tasks have the full task
...
Resolves https://kolaente.dev/vikunja/api/issues/1676
2024-01-27 00:16:17 +01:00
kolaente
d38050f2b8
fix(subscriptions): don't crash when a project is already deleted
2024-01-26 23:53:22 +01:00
kolaente
33a47b7f43
fix(relations): don't allow creating relations which already exist
...
Resolves https://github.com/go-vikunja/frontend/issues/144
2024-01-26 23:37:59 +01:00
kolaente
4d48d814c9
fix: update function signatures
2024-01-16 14:06:44 +00:00
kolaente
2c84688a40
fix: lint
2024-01-14 22:23:33 +01:00
kolaente
514ea71d93
fix(api): make sure permission to read all tasks work for reading all tasks per project
...
Resolves https://github.com/go-vikunja/api/issues/105
2024-01-14 22:17:22 +01:00
kolaente
09696aec1b
fix: create webhooks table for fresh installation
...
Resolves https://github.com/go-vikunja/api/issues/104
Resolves https://kolaente.dev/vikunja/api/issues/1655
2023-12-30 11:58:02 +01:00
kolaente
32611dc2d7
feat(reminders): persist reminders in the db
2023-12-23 15:40:03 +01:00
kolaente
c05f51b923
chore(deps): update golangci-lint rules
2023-12-19 13:34:31 +01:00
kolaente
57bd5aca80
fix(webhooks): send application/json header
2023-12-06 14:09:49 +01:00
kolaente
6ef1bc3944
fix: lint
2023-12-06 14:01:09 +01:00
kolaente
cca42b9188
feat(metrics): add total number of attachments metric
2023-12-03 15:30:39 +01:00
kolaente
0ce110fa52
feat(metrics): add active link share logins
2023-12-03 15:12:43 +01:00