| .. |
|
admin_bypass.go
|
feat(permissions): site admins bypass all Can* checks (license-gated)
|
2026-04-20 18:55:06 +00:00 |
|
admin_bypass_test.go
|
feat(permissions): site admins bypass all Can* checks (license-gated)
|
2026-04-20 18:55:06 +00:00 |
|
admin_project_list.go
|
feat(admin): add users/projects list endpoints and is_admin patch
|
2026-04-20 18:55:06 +00:00 |
|
api_routes.go
|
fix(security): enforce HTTP method and path in scoped API token matcher
|
2026-04-09 15:17:20 +00:00 |
|
api_routes_test.go
|
…
|
|
|
api_tokens.go
|
refactor: extract shared API token validation into ValidateTokenAndGetOwner
|
2026-03-30 12:09:53 +00:00 |
|
api_tokens_expiry_cron.go
|
test: add tests for API token expiry notifications and cron
|
2026-03-30 12:28:15 +00:00 |
|
api_tokens_expiry_cron_test.go
|
test: add tests for API token expiry notifications and cron
|
2026-03-30 12:28:15 +00:00 |
|
api_tokens_expiry_notification.go
|
fix(notifications): escape markdown in user-controlled strings in email lines
|
2026-04-09 15:44:04 +00:00 |
|
api_tokens_expiry_notification_test.go
|
test: add tests for API token expiry notifications and cron
|
2026-03-30 12:28:15 +00:00 |
|
api_tokens_permissions.go
|
…
|
|
|
api_tokens_test.go
|
…
|
|
|
bulk_task.go
|
…
|
|
|
bulk_task_test.go
|
…
|
|
|
error.go
|
feat(tasks): cap repeat_after at 10 years to harden repeating-task handler
|
2026-04-09 16:07:48 +00:00 |
|
events.go
|
feat(webhook): add WebhookDeliveryEvent for per-webhook fan out
|
2026-04-09 09:26:04 +00:00 |
|
export.go
|
…
|
|
|
favorites.go
|
…
|
|
|
kanban.go
|
…
|
|
|
kanban_permissions.go
|
…
|
|
|
kanban_task_bucket.go
|
fix(kanban): skip upsert when repeating task already in default bucket (#2573)
|
2026-04-09 10:45:34 +00:00 |
|
kanban_task_bucket_test.go
|
test(kanban): add failing test for repeating task bucket routing on done (#2573)
|
2026-04-09 10:45:34 +00:00 |
|
kanban_test.go
|
…
|
|
|
label.go
|
…
|
|
|
label_permissions.go
|
fix(labels): derive label max permission from accessible tasks only
|
2026-04-09 15:43:04 +00:00 |
|
label_task.go
|
…
|
|
|
label_task_permissions.go
|
…
|
|
|
label_task_test.go
|
…
|
|
|
label_test.go
|
fix(labels): derive label max permission from accessible tasks only
|
2026-04-09 15:43:04 +00:00 |
|
link_sharing.go
|
fix(security): validate link share JWTs against DB on every request
|
2026-04-09 15:38:07 +00:00 |
|
link_sharing_permissions.go
|
…
|
|
|
link_sharing_test.go
|
fix(security): validate link share JWTs against DB on every request
|
2026-04-09 15:38:07 +00:00 |
|
listeners.go
|
fix(webhook): order matching webhooks by id for deterministic fan-out
|
2026-04-09 09:26:04 +00:00 |
|
main_test.go
|
…
|
|
|
mentions.go
|
…
|
|
|
mentions_test.go
|
…
|
|
|
message.go
|
…
|
|
|
models.go
|
…
|
|
|
notifications.go
|
fix(notifications): escape markdown in user-controlled strings in email lines
|
2026-04-09 15:44:04 +00:00 |
|
notifications_database.go
|
…
|
|
|
notifications_test.go
|
fix(notifications): escape markdown in user-controlled strings in email lines
|
2026-04-09 15:44:04 +00:00 |
|
oauth_codes.go
|
…
|
|
|
permissions.go
|
…
|
|
|
project.go
|
feat(user): extract last-admin guard and close invariant gaps
|
2026-04-20 18:55:06 +00:00 |
|
project_duplicate.go
|
refactor(files): derive attachment size from content in sibling callers
|
2026-04-09 16:22:56 +00:00 |
|
project_duplicate_test.go
|
…
|
|
|
project_permissions.go
|
feat(permissions): site admins bypass all Can* checks (license-gated)
|
2026-04-20 18:55:06 +00:00 |
|
project_permissions_multiple_teams_test.go
|
…
|
|
|
project_repair.go
|
…
|
|
|
project_repair_test.go
|
…
|
|
|
project_team.go
|
…
|
|
|
project_team_permissions.go
|
feat(permissions): site admins bypass all Can* checks (license-gated)
|
2026-04-20 18:55:06 +00:00 |
|
project_team_test.go
|
…
|
|
|
project_test.go
|
test(project): pin archived propagation aggregation in ReadAll CTE
|
2026-04-11 17:20:53 +00:00 |
|
project_users.go
|
…
|
|
|
project_users_permissions.go
|
feat(permissions): site admins bypass all Can* checks (license-gated)
|
2026-04-20 18:55:06 +00:00 |
|
project_users_permissions_test.go
|
…
|
|
|
project_users_test.go
|
…
|
|
|
project_view.go
|
…
|
|
|
project_view_permissions.go
|
feat(permissions): site admins bypass all Can* checks (license-gated)
|
2026-04-20 18:55:06 +00:00 |
|
reaction.go
|
…
|
|
|
reaction_permissions.go
|
…
|
|
|
reaction_test.go
|
…
|
|
|
saved_filter_positions_test.go
|
refactor: use per-view IN clause for filter task deletion instead of batching
|
2026-04-09 07:25:57 +00:00 |
|
saved_filters.go
|
refactor: use per-view IN clause for filter task deletion instead of batching
|
2026-04-09 07:25:57 +00:00 |
|
saved_filters_permissions.go
|
…
|
|
|
saved_filters_test.go
|
…
|
|
|
sessions.go
|
…
|
|
|
sessions_permissions.go
|
…
|
|
|
setup_tests.go
|
…
|
|
|
subscription.go
|
…
|
|
|
subscription_permissions.go
|
…
|
|
|
subscription_test.go
|
…
|
|
|
task_assignees.go
|
…
|
|
|
task_assignees_permissions.go
|
…
|
|
|
task_attachment.go
|
fix: use RememberValue for task attachment preview cache
|
2026-04-08 08:56:22 +00:00 |
|
task_attachment_permissions.go
|
…
|
|
|
task_attachment_test.go
|
fix(files): derive file size from reader at creation boundary
|
2026-04-09 16:22:56 +00:00 |
|
task_collection.go
|
…
|
|
|
task_collection_filter.go
|
…
|
|
|
task_collection_filter_test.go
|
…
|
|
|
task_collection_sort.go
|
…
|
|
|
task_collection_sort_test.go
|
…
|
|
|
task_collection_test.go
|
feat(tasks): enforce unique (project_id, index) via migration
|
2026-04-11 20:44:28 +00:00 |
|
task_comment_permissions.go
|
…
|
|
|
task_comments.go
|
…
|
|
|
task_comments_test.go
|
…
|
|
|
task_duplicate.go
|
refactor(files): derive attachment size from content in sibling callers
|
2026-04-09 16:22:56 +00:00 |
|
task_duplicate_test.go
|
…
|
|
|
task_overdue_reminder.go
|
…
|
|
|
task_overdue_reminder_test.go
|
…
|
|
|
task_position.go
|
fix: catch ErrNeedsFullRecalculation in task creation position conflict resolution
|
2026-04-09 07:25:57 +00:00 |
|
task_position_test.go
|
fix: catch ErrNeedsFullRecalculation in task creation position conflict resolution
|
2026-04-09 07:25:57 +00:00 |
|
task_relation.go
|
…
|
|
|
task_relation_authz_test.go
|
fix: use recursive CTE in accessibleProjectIDsSubquery for inherited project permissions
|
2026-04-05 12:20:35 +00:00 |
|
task_relation_permissions.go
|
…
|
|
|
task_relation_test.go
|
…
|
|
|
task_reminder.go
|
…
|
|
|
task_reminder_test.go
|
…
|
|
|
task_search.go
|
fix(tasks): include tasks with deleted parents in subtask-expanded queries
|
2026-04-02 16:30:23 +00:00 |
|
task_search_bench_test.go
|
…
|
|
|
task_search_test.go
|
…
|
|
|
task_unread_statuses.go
|
…
|
|
|
tasks.go
|
feat(tasks): enforce unique (project_id, index) via migration
|
2026-04-11 20:44:28 +00:00 |
|
tasks_permissions.go
|
feat(tasks): add GetTaskByProjectAndIndex resolver
|
2026-04-11 20:44:28 +00:00 |
|
tasks_test.go
|
feat(tasks): enforce unique (project_id, index) via migration
|
2026-04-11 20:44:28 +00:00 |
|
team_members.go
|
…
|
|
|
team_members_permissions.go
|
feat(permissions): site admins bypass all Can* checks (license-gated)
|
2026-04-20 18:55:06 +00:00 |
|
team_members_test.go
|
…
|
|
|
team_sync.go
|
…
|
|
|
teams.go
|
…
|
|
|
teams_permissions.go
|
feat(permissions): site admins bypass all Can* checks (license-gated)
|
2026-04-20 18:55:06 +00:00 |
|
teams_permissions_test.go
|
…
|
|
|
teams_test.go
|
…
|
|
|
unsplash.go
|
…
|
|
|
user_delete.go
|
refactor(projects): use getAllProjectsForUser in getProjectsToDelete (#2616)
|
2026-04-13 12:32:32 +02:00 |
|
user_delete_test.go
|
refactor(projects): use getAllProjectsForUser in getProjectsToDelete (#2616)
|
2026-04-13 12:32:32 +02:00 |
|
user_list_test.go
|
test(admin): add webtests for /admin/* endpoints and share bypass
|
2026-04-20 18:55:06 +00:00 |
|
user_project.go
|
…
|
|
|
user_project_test.go
|
…
|
|
|
users.go
|
…
|
|
|
webhooks.go
|
fix(webhook): return error from sendWebhookPayload on non-2xx responses
|
2026-04-09 09:26:04 +00:00 |
|
webhooks_permissions.go
|
…
|
|