Commit Graph
23 Commits
Author SHA1 Message Date
vadim 8d02d25da0 firebase messaging
Gitea Actions / Deploy (push) Successful in 2m1s
2026-10-16 16:51:55 +03:00
vadim 5ad0ecdf4c typo
Gitea Actions / Deploy (push) Successful in 36s
2026-10-14 21:26:15 +03:00
vadim 7aecc6f96e calendar due date
Gitea Actions Demo / Deploy (push) Successful in 31s
2026-10-12 11:08:27 +03:00
vadim cb29c7d2c4 Add issue change history and daily issue stats
Gitea Actions Demo / Deploy (push) Successful in 32s
Issue changes are recorded per field in the issue_change table, in the same
transaction as the issue itself. The new history module exposes:
- GET /api/issues/:issueId/history — change timeline grouped by save
- GET /api/issues/stats/daily — created, status transitions and status
  snapshot per day, with time zone support

The migration backfills history for existing issues. Setting a field to its
current value no longer bumps updatedAt or emits issue.updated.
2026-10-08 09:55:21 +03:00
vadim f44590b8ca update issue filter
Gitea Actions Demo / Deploy (push) Successful in 31s
2026-10-06 23:18:00 +03:00
vadim 5607e97533 sort comments
Gitea Actions Demo / Deploy (push) Successful in 1m50s
2026-10-02 21:43:37 +03:00
vadimandClaude Opus 5.5 d0fcc93a8d Add WIP notes on attachments work
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:18:15 +03:00
vadimandClaude Opus 5.5 60fb39f98f Add attachments to comments
- CommentAttachment link table (comment <-> file) + migration
- fileIds in create/update comment; update replaces the whole set,
  synced in one transaction with the comment
- CommentDto.attachments; empty for deleted comments
- Soft delete drops attachments so GC can collect the files
- Max 10 files per comment, ordered by upload time (uuid v7)
- Registers comments as a file owner
- Rename CommentAuthorExpanderService -> CommentExpanderService
  (expands authors and files)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:18:08 +03:00
vadimandClaude Opus 5.5 423afa658d Add issue attachments
- IssueAttachment link table (issue <-> file) + migration
- GET/POST /issues/:issueId/attachments, DELETE .../attachments/:fileId
- Only own uploaded files can be attached; attach is idempotent
- Registers issues as a file owner: attached files stay visible to issue
  participants and are not collected by GC
- IssueDetail.attachments GraphQL field via @ResolveField, issue module untouched

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:18:02 +03:00
vadimandClaude Opus 5.5 f32c6e348d Add file module for uploads and storage
- File model + migration: file metadata, content lives in object storage
- IFileStorage port with local disk and S3-compatible (RustFS/MinIO) adapters
- POST /files, GET /files/:id/download, DELETE /files/:id
- MIME sniffed from content; only safe images served inline, nosniff header
- FileOwnerRegistry: owner modules register to grant visibility and keep
  their files from GC; FileGcService removes orphaned files hourly
- TransformResponseInterceptor passes StreamableFile through

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:17:55 +03:00
vadim 5cfc8986d7 prettier
Gitea Actions Demo / Deploy (push) Successful in 1m34s
2026-10-01 12:04:21 +03:00
vadim 4b6ecfbf5d comments implement 2026-10-01 12:02:03 +03:00
vadim 9e0bef2527 update git ignore 2026-10-01 11:25:31 +03:00
vadimandClaude Opus 5.5 3272c75512 Add Comment model for issue comments
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:23:51 +03:00
vadimandClaude Opus 5.5 2696f33a7e Keep issues when assignee or reporter is deleted
Switch issue.assigneeId/reporterId FKs from CASCADE to SET NULL and make
reporter nullable through the entity, DTOs and GraphQL types.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:23:51 +03:00
vadimandClaude Opus 5.5 4b8c855855 Add missing migration for notification tables
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:23:46 +03:00
vadim 60391ee123 notification 2026-09-29 18:42:29 +03:00
vadim 382cafa152 stat filter
Gitea Actions Demo / Deploy (push) Successful in 28s
2026-09-28 17:35:03 +03:00
vadim 40d579cdb9 add filed dueDate
Gitea Actions Demo / Deploy (push) Successful in 29s
2026-09-27 22:41:35 +03:00
vadim f0f36c4f48 filter
Gitea Actions Demo / Deploy (push) Successful in 29s
2026-09-25 18:57:01 +03:00
vadim 9f36b7cedc fix better auth
Gitea Actions Demo / Deploy (push) Successful in 18s
2026-09-24 16:21:16 +03:00
vadim e9a61ac684 ci/cd
Gitea Actions Demo / Deploy (push) Successful in 8s
2026-09-24 15:02:16 +03:00
vadim 7b999a670c init
Gitea Actions Demo / Deploy (push) Failing after 18s
2026-09-24 10:34:27 +03:00