246 Commits
Author SHA1 Message Date
AdminandClaude Opus 4.8 573539ea1b cleanup(worker): drop empty Worker BackgroundService; fix gateway ticket guard
- Remove the no-op Worker BackgroundService and its registration; the process
  is kept alive and does its work through the MassTransit bus and the upload
  intent jobs (their own hosted services)
- Fix the gateway middleware guard to reject on string.IsNullOrEmpty(prefix)
  instead of 'is null', which no longer matched TicketValidator returning
  string.Empty for invalid tickets (invalid tickets skipped the 401 and an
  empty object key could slip through)

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 22:13:20 +02:00
Admin e15e587267 Formatting 2026-07-05 22:07:43 +02:00
Admin dece2c77e8 Empty string 2026-07-05 22:06:50 +02:00
AdminandClaude Opus 4.8 5aeca4deb1 refactor(gateway): simplify prefix extraction in TicketValidator
Read the prefix claim via ClaimsIdentity.FindFirst instead of a three-part
ternary over the claims dictionary, and drop the XML summary.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 21:59:55 +02:00
AdminandClaude Opus 4.8 45ce66a6ee harden(gateway): prefix-boundary + path-traversal checks; simplify ticket validation
Tighten the stream-ticket authorization in the gateway middleware:
- Enforce a path-segment boundary on the prefix check instead of a bare
  StartsWith, so a ticket for 'users/12' no longer grants 'users/1234/...'
  (exact-match still allowed for single-object grants)
- Reject object keys containing '..'/'.' segments before proxying, closing a
  path-traversal bypass that SeaweedFS would otherwise resolve outside the
  authorized prefix

Also simplify TicketValidator.ValidateTicketAsync from ErrorOr<string> to
string? (null = invalid) since it has a single failure mode; drop the now
unused ErrorOr package reference from the gateway.

Verified: build clean; the authorization predicate passes a table of cases
covering both the escalation and traversal vulnerabilities.

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 21:50:43 +02:00
AdminandClaude Opus 4.8 a40de35a57 refactor(api): OpenAPI response metadata, cached user sync, ProblemDetails
- Document every endpoint's responses (Produces<T>/status codes/validation)
  so the generated OpenAPI/Scalar docs carry response schemas and status codes
  instead of empty responses
- Cache recently-synced user ids (IMemoryCache, 15 min) in the JWT
  TokenValidated handler so user provisioning no longer hits the DB on every
  authenticated request
- Add ProblemDetails + UseExceptionHandler for consistent RFC7807 errors
- Add ToCreatedResult ErrorOr helper and use it in the create endpoints
- Normalize the playlists route to lowercase (/playlists)

Verified: booted the Api against RabbitMQ + Postgres in Docker and inspected
/openapi/v1.json — operations now expose response schemas/status codes and the
route is /playlists.

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 21:04:15 +02:00
AdminandClaude Opus 4.8 1d40abcab7 feat(deploy): consolidated dev stack with auto-provisioned Zitadel
Single docker-compose stack for local development (Postgres, Zitadel,
RabbitMQ, SeaweedFS + bucket init, Jaeger) plus an optional overlay to run
the .NET apps in Docker. up.ps1 orchestrates the full bootstrap: stack up,
stream-ticket keys, EF Core migrations and Zitadel provisioning.

- Zitadel is provisioned automatically (service-account PAT -> project +
  OIDC app with JWT access token); the generated ClientId is wired into
  Musify.Api user-secrets and .env. No manual console steps.
- ZITADEL_EXTERNAL_DOMAIN=host.docker.internal so token validation works
  both with local apps and full-docker.
- App Dockerfiles copy AppSettings*.json to lowercase so config loads on
  case-sensitive Linux; Worker image ships ffmpeg.
- Scripts split by responsibility (common/stream-keys/migrate/provision);
  apps overlay de-duped via YAML anchors.
- Remove the superseded standalone seaweedfs compose; point docs/development
  at the unified stack.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 20:32:40 +02:00
Admin d6c269d80f Formatting 2026-07-05 16:04:53 +02:00
AdminandClaude Opus 4.8 431b56a072 refactor(infra): register auditable interceptor via DI
Register AuditableEntityInterceptor as a singleton and attach it through the
AddDbContext options callback instead of newing it up inside
Database.OnConfiguring. The interceptor is stateless, so a single shared
instance is reused across contexts and its wiring lives in the DI layer.
The design-time factory keeps working (interceptor is runtime-only, irrelevant
for migrations).

Verified: build + ef migrations list (design-time context) OK; the Worker host
builds and validates the full DI graph (reaches endpoint configuration) with no
captive-dependency or interceptor error.

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:14:03 +02:00
AdminandClaude Opus 4.8 c2258569a0 refactor(infra): S3 client singleton, ffmpeg pipe ordering, tidy streams/jobs
- Register IAmazonS3 as a singleton instead of scoped: the AWS SDK client is
  thread-safe and manages its own connection pool, so one instance per DI scope
  (per request / per job iteration) was wasteful and risked socket exhaustion
- AudioTranscoderService: start reading stdout/stderr before writing stdin to
  remove the latent pipe-buffer deadlock shape
- Dispose the resized-picture MemoryStream in ResizePictureActivity
- Background jobs use PeriodicTimer instead of while + Task.Delay

Verified: Worker boots against RabbitMQ + Postgres in Docker with no captive-
dependency error (dev scope validation) and both jobs start.

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:07:49 +02:00
AdminandClaude Opus 4.8 a5305b8ed8 feat(infra): playlist processing saga + generalize fault handling (phase 3)
Adds the PlayList picture-processing lifecycle saga (correlated by PlayListId)
mirroring the track one, and generalizes the failure plumbing:
- Rename the track fault translator to ProcessingSlipFaultConsumer and use a
  generic Workflow.SubjectId variable + ProcessKind; it now emits typed
  Track{Picture,Audio}/PlayListPicture ProcessingFailed events for all slips
- PlayListProcessingStateMachine (+ EF-persisted PlayListProcessingState,
  migration): starts on CreatePlayListResourcesEvent, finalizes on
  PlayListPictureProcessed, and on failure marks the playlist Failed and
  removes the orphaned final picture (PlayListProcessingFailedConsumer +
  MarkPlayListAsFailedActivity)
- UpdatePlayListPictureActivity publishes PlayListPictureProcessed on success
- Picture slip carries SubjectId + PlayListPicture kind + fault subscription

Verified end-to-end in Docker (RabbitMQ + migrated Postgres): both saga
endpoints, the fault translator and cleanup consumers configure, and an
addressing cross-check confirms all 21 activity execute queues the builders
address exist (caught + fixed a kebab mismatch on mark-play-list-as-failed).

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:55:40 +02:00
AdminandClaude Opus 4.8 8664bfb800 feat(infra): track saga failure handling + cleanup (phase 2)
On definitive failure of the picture or audio slip, the saga now reaches a
Failed state and recovers end-to-end:
- Picture/audio track slips carry TrackId + ProcessKind variables and a
  subscription to a fault translator (TrackProcessingSlipFaultConsumer) that
  turns RoutingSlipFaulted into a typed Track{Picture,Audio}ProcessingFailed
- The saga stores the final object keys from the start event and, on failure,
  transitions to Failed and publishes TrackProcessingFailed
- TrackProcessingFailedConsumer runs a cleanup slip that removes the orphaned
  final picture/audio copies and marks the track LifeCycleStatus=Failed
  (MarkTrackAsFailedActivity) — the track stays as a visible, recoverable record
- Migration for the new saga columns

Verified: Worker boots against RabbitMQ + Postgres in Docker; the new
endpoints (fault translator, failed consumer, mark-track-as-failed) configure
and the bus starts clean.

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:49:33 +02:00
AdminandClaude Opus 4.8 986941166c feat(infra): add Track processing saga (state machine, phase 1)
Introduce a MassTransit saga state machine that correlates by TrackId and
tracks the two parallel processing slips (picture + audio):
- TrackProcessingStateMachine + EF-persisted TrackProcessingState
  (pessimistic concurrency, EntityFrameworkRepository), migration added
- Starts on CreateTrackResourcesEvent; UpdateTrack{Picture,Audio}Activity now
  publish TrackPictureProcessed / TrackAudioProcessed on success; when both
  arrive the saga finalizes (Ready). Failure transitions to a Failed state
  (cleanup wired in the next phase)
- Add LifeCycleStatus.Failed and the four outcome events

Verified: booted the Worker against RabbitMQ + migrated Postgres in Docker;
the saga endpoint 'track-processing-state' is configured and the bus starts
clean.

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:41:19 +02:00
AdminandClaude Opus 4.8 3545d71016 refactor(infra): auto-configure MassTransit endpoints via ConfigureEndpoints
Replace ~240 lines of hand-written per-endpoint wiring with MassTransit's
ConfigureEndpoints + KebabCaseEndpointNameFormatter, and apply retry + EF
outbox globally through AddConfigureEndpointsCallback. Adding a consumer or
activity is now a single AddConsumer/AddActivity line.

- Normalize the 4 mismatched activity endpoint names to kebab-case so the
  routing-slip addressing keeps resolving (update-play-list-picture,
  delete/mark/publish play-list variants); cleanup consumer queue is now
  routing-slip-clean-up
- Drop the now-unused QueueName consts from event consumers and trim
  EndpointHelper / delete the manual endpoint-config partial

Verified end-to-end: booted the Worker against RabbitMQ in Docker and
confirmed all 38 endpoints are configured with the exact names the builders
address (19 execute queues + compensations + consumers + routing-slip-clean-up).

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:22:26 +02:00
AdminandClaude Opus 4.8 d08d82a483 fix(infra): repair TransferFiles compensation + tidy MassTransit consistency
Fix (recoverability bug):
- TransferFilesToBucketActivity returned Completed() with no log, so its
  compensation could never delete the transferred files (orphaned objects on
  fault). IStorageService.TransferFilesAsync now returns the real uploaded
  keys; the activity logs them so Compensate can remove them. Also drops the
  Path.Combine key recomputation (produced backslash keys on Windows).

Consistency / DRY:
- Normalize all courier activities to internal + folder-based namespaces
  (several were public and in the flat .Activities namespace)
- Extract the duplicated exponential retry into UseStandardRetry
- Unify endpoint-name logic into a single EndpointHelper (remove the parallel
  MassTransitEndpointNames helper)

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 04:58:27 +02:00
AdminandClaude Opus 4.8 423e06baf9 refactor(application): fold Pagination into Shared, rename assembly marker
- Move PaginatedResponse from the single-file Pagination/ folder into Shared/
  (namespace Musify.Application.Pagination -> Musify.Application.Shared)
- Rename MusifyApplication.cs -> AssemblyInfo.cs (it only holds the
  [assembly: MediatorOptions] attribute)

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 04:38:12 +02:00
AdminandClaude Opus 4.8 38f7094fb0 refactor(di): add AddApplication entry point and generic AddValidatedOptions
- Add Musify.Application.AddApplication(services, config) as the layer's DI
  entry point: registers Mediator, UploadIntentValidator and all app configs
- Collapse the 5 near-identical AddXConfiguration methods into a single
  generic AddValidatedOptions<T>(config, section)
- Move UploadIntentValidator registration out of Infrastructure into the
  Application layer (fixes layering leak); Infra config binding now uses the
  generic helper
- Api calls AddApplication; Worker uses AddValidatedOptions for its configs

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 04:36:46 +02:00
AdminandClaude Opus 4.8 e802c8565d refactor(application): co-locate each command/query with its handler
One file per use case under the feature folder (Tracks/PlayLists/Users),
dropping the Commands/Queries/Handlers sub-folders and their namespaces.
Each file now holds the record and its handler in namespace
Musify.Application.<Feature>; external usings updated accordingly.

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 04:12:59 +02:00
AdminandClaude Opus 4.8 6e469dbb4a refactor: replace Ardalis.Result with ErrorOr across the app
Ardalis Result<T> carried incoherent success sub-statuses and a clunky
generic converter; ErrorOr models success-or-errors cleanly.

- Application: all commands/queries/handlers now return ErrorOr<T>
  (non-generic Result -> ErrorOr<Success>); errors via Error.NotFound/
  Conflict/Validation/Unauthorized/Failure; success via value or new Success()
- Drop ResultExtensions.As<>(): error propagation is now just return .Errors
- Rewrite HTTP mapping (ErrorOrHttpExtensions) off Error.Type; success maps
  to 200 (value) or 204 (Success); Created still built in the endpoints
- Endpoints/gateway middleware: !IsSuccess -> IsError
- Swap Ardalis.Result package for ErrorOr 2.1.1 (remove unused ref from Worker)

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 04:05:43 +02:00
AdminandClaude Opus 4.8 a3bf796f17 chore(backend): install AI agent skills for the .NET stack
Run autoskills in backend/: detects .NET/C#/ASP.NET Core/Minimal API and
installs 13 skills for universal (.agents) and claude-code (.claude) agents,
with backend/skills-lock.json. Adds ASP.NET Core, Minimal API + OpenAPI,
file-upload and containerization skills on top of the prior C#/.NET set.
Removes the stale root skills from the old layout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 03:48:31 +02:00
AdminandClaude Opus 4.8 8f34ed4874 chore: group .NET into backend/ and drop non-.NET test artifacts
- Move all .NET (6 projects, solution, Directory.*.props, nuget.config)
  into backend/ so the monorepo root can host non-.NET projects later
- Remove throwaway test artifacts: player.html, pl.json
- Trim dead Flutter rules from .gitignore

Build from backend/Musify.slnx: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 03:43:52 +02:00
AdminandClaude Opus 4.8 d9c8c17b21 refactor: central package management, shared build props, security fix
- Add Directory.Packages.props (CPM): all package versions centralized,
  remove Version attributes from every PackageReference
- Add Directory.Build.props: shared TargetFramework/Nullable/ImplicitUsings
- Drop redundant per-project RootNamespace/AssemblyName (default = project name)
  and stale NuGet metadata (PackageId/Version/Authors/RepositoryUrl)
- Bump Microsoft.OpenApi to 2.9.0 (CVE-2026-49451, was transitive 2.0.0);
  add explicit reference in Musify.Api which uses it directly
- Add repo-scoped nuget.config pinning nuget.org for reproducible restore

Build: 0 warnings, 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 03:40:05 +02:00
AdminandClaude Opus 4.8 f6d668d201 refactor: standardize project names to Musify.* and flatten layout
- Flatten nested per-repo folders into flat Musify.* projects at root
- Rename assemblies/csproj: Domain->Musify.Domain, Application->Musify.Application,
  Infrastructure->Musify.Infrastructure, WebApi->Musify.Api, Worker->Musify.Worker,
  StreamingGateway->Musify.StreamingGateway
- Rename WebApi.* namespaces to Musify.Api.*
- Update all ProjectReference paths and the solution file
- Consolidate stray per-repo dotfiles; add root .gitattributes
- Move flutter client out to _archive

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 03:32:48 +02:00
AdminandClaude Opus 4.8 8ab4d27287 chore: move flutter client out of monorepo into _archive
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 03:26:36 +02:00
AdminandClaude Opus 4.8 4b80c7dbb0 chore: bring flutter client, docs, deploy and tools into monorepo
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 03:22:24 +02:00
AdminandClaude Opus 4.8 8c0519d125 feat: add unified Musify solution spanning all projects
Groups Domain/Application/Infrastructure under Core and
WebApi/Worker/StreamingGateway under Hosts. Removes the per-repo
.slnx files now superseded by the single solution.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 03:21:32 +02:00
Admin 27922f2d14 chore: import Musify.StreamingGateway into monorepo (preserving history)
git-subtree-dir: Musify.StreamingGateway
git-subtree-mainline: 28426571e6
git-subtree-split: a8ff05892d
2026-07-05 03:20:50 +02:00
Admin 28426571e6 chore: import Musify.Worker into monorepo (preserving history)
git-subtree-dir: Musify.Worker
git-subtree-mainline: c3cdd3bc0f
git-subtree-split: 868860fff9
2026-07-05 03:20:48 +02:00
Admin c3cdd3bc0f chore: import Musify.WebApi into monorepo (preserving history)
git-subtree-dir: Musify.WebApi
git-subtree-mainline: 9d433868cc
git-subtree-split: ca8750c3b4
2026-07-05 03:20:47 +02:00
Admin 9d433868cc chore: import MusifyBackend into monorepo (preserving history)
git-subtree-dir: MusifyBackend
git-subtree-mainline: 6829e769ed
git-subtree-split: ed7b00c2cc
2026-07-05 03:20:43 +02:00
AdminandClaude Opus 4.8 6829e769ed chore: initialize Musify monorepo
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 03:20:11 +02:00
AdminandClaude Opus 4.8 ca8750c3b4 chore: preserve local dev config before monorepo import
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 03:19:56 +02:00
Admin ed7b00c2cc Adjust 2026-06-03 00:32:37 +02:00
Admin e3b7a0353e Set Content-Type on transferred objects so .m4a is served as audio/mp4 2026-06-02 19:26:45 +02:00
Admin a8ff05892d Serve audio .m4a by range; remove DASH manifest rewriting 2026-06-02 19:05:19 +02:00
Admin 47c3a431c2 Point streaming config to single .m4a; drop DASH ffmpeg settings 2026-06-02 19:05:18 +02:00
Admin b737d59cbe Migrate audio transcoding from DASH to a single AAC (.m4a) file 2026-06-02 19:05:11 +02:00
Admin 2978b69654 Fix bugs 2026-06-01 22:48:42 +02:00
Admin 69eeefd58f Simplify user sync: rely on EF change tracking instead of manual hasChanges flag 2026-06-01 22:11:48 +02:00
Admin 30f57ff50e Auto-set CreatedAt/UpdatedAt via EF interceptor; standardize timestamp names across entities 2026-06-01 22:04:52 +02:00
Admin 55c73cbb3d Changes 2026-06-01 20:50:46 +02:00
Admin e59a5fa8ef Remove checks 2026-06-01 20:41:34 +02:00
Admin bd010e0330 Link created track to its owner via UserHasTrack 2026-06-01 19:07:33 +02:00
Admin 45999af9f8 Add endpoint to list paginated tracks of a playlist 2026-06-01 18:54:26 +02:00
Admin ca4d6c5ed2 Add paginated query for tracks of a playlist; make PlayListHasTrack.Track navigation non-nullable 2026-06-01 18:54:25 +02:00
Admin 58fda0ba9a Extract storage key building into a shared StorageKey helper 2026-06-01 16:45:37 +02:00
Admin 032906de6b Sync user profile (incl. picture) from token claims on validation 2026-06-01 01:47:47 +02:00
Admin 5c5fab86a5 Add user profile picture URL synced from the identity provider on login 2026-06-01 01:47:47 +02:00
Admin ba093e7fd5 Add playlist endpoints to add and remove tracks 2026-06-01 01:20:18 +02:00
Admin 842dd13efa Add and remove tracks from playlists (commands + handlers with ownership checks) 2026-06-01 01:20:17 +02:00
Admin 55549818af Cleanup 2026-06-01 00:24:41 +02:00
Admin 868860fff9 Initial commit: Musify.Worker background worker (MassTransit consumers for picture/audio processing) 2026-06-01 00:19:45 +02:00
Admin 3fea58cd72 Remove unused usings 2026-05-31 19:28:08 +02:00
Admin 03d9fa054f Allow any CORS origin in Development 2026-05-31 19:25:15 +02:00
Admin c1fc0ed1a1 Return 400 for validation errors without identifier and enable permissive CORS in Development 2026-05-31 19:25:15 +02:00
Admin 253a67aabf Fix audio DASH workflow: dispose source stream before delete and store S3 folder key as AudioFolderName 2026-05-31 19:25:15 +02:00
Admin e4452843e7 Use long 2026-05-31 18:25:40 +02:00
Admin 69cc73c374 Use long 2026-05-31 18:25:39 +02:00
Admin 9772879e67 Fixes on scalar 2026-05-30 03:44:32 +02:00
Admin bd92928366 Proxy 2026-05-30 03:30:32 +02:00
Admin 46985bf062 Proxy 2026-05-30 03:29:21 +02:00
Admin 834d7a25c1 Use development 2026-05-30 02:30:18 +02:00
Admin dc1d3c2269 Remove unused using 2026-05-30 02:27:12 +02:00
Admin 67d340fcaa BugFix 2026-05-30 02:26:33 +02:00
Admin 47bff00268 Changes 2026-05-30 02:24:55 +02:00
Admin f20391391a Add project files. 2026-05-30 02:16:39 +02:00
Admin f9aaa1a1fe Add .gitattributes and .gitignore. 2026-05-30 02:16:37 +02:00
Admin b6754a0e76 Update endpoint 2026-05-29 22:42:48 +02:00
Admin 3313560e6c ?? 2026-05-29 22:37:51 +02:00
Admin 8455033e52 Use if condition 2026-05-29 22:37:32 +02:00
Admin 7cb1851b0d Use null 2026-05-29 22:36:33 +02:00
Admin 036dcf72a7 Current User 2026-05-29 22:29:54 +02:00
Admin 39be51304b Added auth 2026-05-29 16:02:34 +02:00
Admin 335e1a785e Remove tests 2026-05-29 15:47:38 +02:00
Admin 5751b9ea08 Remove docs and agents 2026-05-29 15:45:53 +02:00
Admin 5765982a4d Remove tests 2026-05-29 15:45:31 +02:00
Admin ee18fe2ee1 Remove tests 2026-05-29 15:44:20 +02:00
Admin fd41053030 Small changes 2026-05-29 13:49:49 +02:00
Admin af2cf03fb4 Added tests 2026-05-29 13:49:44 +02:00
Admin 1efdbc237a Added tests 2026-05-29 13:37:34 +02:00
Admin be3f832e11 PascalCase 2026-05-29 02:28:35 +02:00
Admin 275c001f1f PascalCase 2026-05-29 02:26:37 +02:00
Admin 285668efc7 Rename 2026-05-29 01:57:28 +02:00
Admin 10124f0184 Rename 2026-05-29 01:57:27 +02:00
Admin b6dea8b041 Changes 2026-05-29 01:48:48 +02:00
Admin 585af60371 Changes 2026-05-29 01:48:46 +02:00
Admin 4dbd87f5d9 Remove unused usings 2026-05-29 00:25:26 +02:00
Admin 05c53058da Fixes and config 2026-05-28 23:49:09 +02:00
Admin 99d202f143 Remove keycloak 2026-05-28 23:16:35 +02:00
Admin de66cb0f48 Remove keycloak 2026-05-28 23:16:30 +02:00
Admin 52a561d52a Change 2026-05-28 23:14:32 +02:00
Admin 3b79b399ce Change on filter 2026-05-28 22:06:09 +02:00
Admin 64653f4fcd validators 2026-05-28 21:53:46 +02:00
Admin 9a3e7d4bb5 Remove guid as is unvalid 2026-05-28 21:49:18 +02:00
Admin 9ecb16f888 Update endpoints 2026-05-28 21:44:28 +02:00
Admin 036786bd59 Update packages 2026-05-28 21:37:46 +02:00
Admin f761405771 Add project files. 2026-05-28 21:35:31 +02:00
Admin f268bc2294 Add .gitattributes and .gitignore. 2026-05-28 21:35:29 +02:00
Admin 130f23f841 Change on files 2026-05-28 21:07:49 +02:00
Admin d35e8eb5f7 PreventOverwrite 2026-05-28 21:04:09 +02:00
Admin 94bf9c61a3 Update structure 2026-05-28 20:42:38 +02:00
Admin ffa3a73bb8 Update structure 2026-05-28 20:42:35 +02:00
Admin 25accf3456 Update structure 2026-05-28 20:41:03 +02:00
Admin 2769c7f38f 1 2026-05-28 18:37:54 +02:00
Admin 6fa7c24516 Changes 2026-05-14 22:22:47 +02:00
Admin e64aa4e90a Compilation fixes 2026-05-14 22:15:26 +02:00
Admin 4cb308b78d Fixes and a lot of changes 2026-05-14 22:13:22 +02:00
Admin 348f5cb813 Changes 2026-05-14 21:42:31 +02:00
Admin deb4bfda90 Generated response 2026-05-14 19:53:26 +02:00
Admin 7aef20fe71 Update plans 2026-05-14 18:48:00 +02:00
Admin 5a00a2478e Update delete workflows 2026-05-14 18:24:20 +02:00
Admin f2febb898e A lot of changes 2026-05-14 14:32:19 +02:00
Admin 7160266763 Bump version 2026-05-14 01:32:29 +02:00
Admin 1ed2ec8d93 Update migrations 2026-05-14 01:06:30 +02:00
Admin 0e65103af2 Renames 2026-05-14 01:05:07 +02:00
Admin f6ac45cb79 Safe code and changes 2026-05-14 01:00:44 +02:00
Admin 1ecf4a872e Remove processingStatus 2026-05-13 21:56:34 +02:00
Admin fa6eaf5a2b Reworks 2026-05-13 02:20:22 +02:00
Admin 57a5358701 Remove keycloak and add missing functions 2026-05-09 19:36:49 +02:00
Admin b28edbbd3a Update routes and changes on queries 2026-05-09 19:09:10 +02:00
Admin be2bbea4cc Changes on routes 2026-05-09 18:57:16 +02:00
Admin 4da960d9a1 AsNoTracking 2026-05-09 18:49:39 +02:00
Admin e5099343d6 Fix stringLength 2026-05-09 18:47:57 +02:00
Admin db78df7f0e Change 2026-05-09 02:56:43 +02:00
Admin 3f10613df0 Update grafana 2026-05-08 21:48:31 +02:00
Admin 5aa8e1db60 Version bump 2026-04-01 09:50:53 +02:00
Admin 049e4723cd UTC 2026-04-01 09:50:30 +02:00
Admin 9585d8f34c Missing configuration DI 2026-03-30 15:55:44 +02:00
Admin c30dfd6923 Version 2026-03-30 10:20:32 +02:00
Admin 7a219e4dea Rename 2026-03-30 10:12:51 +02:00
Admin c6e0c45a50 Remove unused file 2026-03-30 10:07:08 +02:00
Admin ce278dc935 Configure packages 2026-03-30 09:51:59 +02:00
Admin 093b84e660 Remove 2026-03-30 09:43:53 +02:00
Admin 795f8fdab0 Configuration mediator 2026-03-29 20:37:40 +02:00
Admin b9f03eb03c Remove DispatchR and use Mediator 2026-03-29 20:17:32 +02:00
Admin 9e4d5158e8 Fixes 2026-03-29 19:10:24 +02:00
Admin 12aa104d80 Fix and missing service 2026-03-29 18:59:50 +02:00
Admin 164fb5f29a Configurations 2026-03-29 18:31:21 +02:00
Admin f92b1b93ea Rename 2026-03-29 18:26:44 +02:00
Admin e983f5af4d Format 2026-03-29 18:23:13 +02:00
Admin b433060deb Map 2026-03-29 18:21:56 +02:00
Admin 3e54b5db43 Experimental changes 2026-03-29 17:15:39 +02:00
Admin 7d4265d47c Spaces 2026-03-29 00:59:27 +01:00
Admin 2518101a52 Changes on messages 2026-03-28 21:26:45 +01:00
Admin 4fa341d2c8 Rewrite handlers 2026-03-28 20:47:54 +01:00
Admin 06ef70cb3b Renames and changes 2026-03-28 15:32:36 +01:00
Admin d2a1807883 Rename variables 2026-03-28 03:27:31 +01:00
Admin ffaf9990df Changes 2026-03-28 02:57:08 +01:00
Admin c78ec50036 Ops 2026-03-28 02:56:18 +01:00
Admin b9ad1a87a8 Fix 2026-03-28 02:56:08 +01:00
Admin bc9fdad098 Renames 2026-03-27 23:07:05 +01:00
Admin 32b83e84a6 Fixed routes and bugs 2026-03-27 23:06:17 +01:00
Admin 075ff3c7b6 Changes on routes 2026-03-27 21:16:38 +01:00
Admin 9b1ae1a7a1 TransferFiles 2026-03-27 18:07:17 +01:00
Admin 7ffd63ed9a Use variable 2026-03-26 19:59:44 +01:00
Admin 606fa26c3f Missing log 2026-03-26 18:24:11 +01:00
Admin 0384de792b Upload file activity 2026-03-26 18:23:59 +01:00
Admin 6c413f5174 Update paths 2026-03-25 19:40:07 +01:00
Admin b201a4a7af Fix namespaces 2026-03-25 18:12:08 +01:00
Admin cbea2ad9dc Missing files 2026-03-25 18:09:37 +01:00
Admin d3dbde4fec File ignored 2026-03-25 10:41:23 +01:00
Admin 3dea06b0cc Fixes 2026-03-25 02:13:47 +01:00
Admin 6e06d7673d Rename 2026-03-25 00:35:23 +01:00
Admin 10a66c70c8 Delete temporal folders and some changes 2026-03-24 20:52:44 +01:00
Admin 0355bd22a6 Format 2026-03-24 19:55:31 +01:00
Admin bf23224a51 Renames and migrations 2026-03-24 19:47:32 +01:00
Admin 01093abced Changes 2026-03-24 19:32:43 +01:00
Admin 22a65b7efa Changes 2026-03-24 14:45:20 +01:00
Admin 4f5230ddf6 Changes 2026-03-24 14:45:04 +01:00
Admin 510f52a034 TempPath 2026-03-23 19:30:20 +01:00
Admin 0872b8df6f Change on routes 2026-03-23 19:17:15 +01:00
Admin 7a81341218 Logger 2026-03-23 17:22:47 +01:00
Admin 75cb09dbf2 Changes 2026-03-23 17:16:01 +01:00
Admin d62d3441db Refactor audioTranscoder 2026-03-23 17:14:49 +01:00
Admin f1b7191ccc Cambios 2026-03-23 16:53:23 +01:00
Admin 788fb6fa5c Use variables 2026-03-23 16:28:02 +01:00
Admin fab98098c8 Collection expression 2026-03-23 16:13:26 +01:00
Admin 4e089c4da8 Download once 2026-03-23 09:48:15 +01:00
Admin 7c7f118a43 Comments 2026-03-23 09:38:02 +01:00
Admin 9eb6fa826e Changes but failing 2026-03-23 03:13:08 +01:00
Admin d771c6c0a7 Missing file 2026-03-22 04:02:50 +01:00
Admin ff64f1f136 Staged 2026-03-22 04:02:30 +01:00
Admin 4215fb483a First iteration 2026-03-22 04:02:17 +01:00
Admin d4af39f53b Audio Transcoder 2026-03-21 22:23:31 +01:00
Admin 951e42d21a Handler 2026-03-21 21:01:57 +01:00
Admin a98969ec3a Refactor 2026-03-21 20:38:13 +01:00
Admin 2c3b84a233 Move 2026-03-21 20:33:15 +01:00
Admin 801bf08337 Queries y algunos cambios 2026-03-21 04:00:12 +01:00
Admin 1bff5e62ea A lot of changes 2026-03-21 03:45:29 +01:00
Admin df4f4bdf66 Routes 2026-03-21 00:04:19 +01:00
Admin 088016f986 Message 2026-03-20 23:26:49 +01:00
Admin 32c1e3b842 Nullable 2026-03-20 23:24:32 +01:00
Admin 285b93a9be Grafana 2026-03-20 22:28:32 +01:00
Admin 8ce3e68b81 OT 2026-03-20 22:18:37 +01:00
Admin 1bd8c8779d Config 2026-03-20 21:45:36 +01:00
Admin b34a711d2d Rework jobs 2026-03-20 21:40:05 +01:00
Admin 93a975e9b5 Last consumer 2026-03-20 20:33:56 +01:00
Admin 62283bd403 Renames 2026-03-20 20:24:46 +01:00
Admin eda9bef828 Refactor 2026-03-20 20:24:10 +01:00
Admin 9756672160 Changes 2026-03-20 20:09:36 +01:00
Admin af061bc6fc Rename 2026-03-20 12:27:45 +01:00
Admin b5955fda5b Changes 2026-03-20 12:22:07 +01:00
Admin 17944b5344 Refactor 2026-03-20 12:10:54 +01:00
Admin dac5096998 Error message 2026-03-20 12:01:08 +01:00
Admin eb822ff1bf Rename 2026-03-20 11:57:16 +01:00
Admin 031fdb7f46 Refactor 2026-03-20 11:11:45 +01:00
Admin 0b8257a346 Fix job 2026-03-20 10:43:52 +01:00
Admin 676910e462 IEventBus 2026-03-20 09:53:54 +01:00
Admin 18da740e08 Keycloak service 2026-03-20 09:42:05 +01:00
Admin 3c21e0ea1a Rename 2026-03-20 09:41:43 +01:00
Admin a036454220 MaxLength 2026-03-20 09:32:42 +01:00
Admin 535b6e457b Spaces 2026-03-20 01:59:48 +01:00
Admin 4343542dce JobExecution 2026-03-20 01:58:45 +01:00
Admin 58b0974bec [NotMapped] 2026-03-20 01:37:51 +01:00
Admin f3edcd0af4 States 2026-03-20 01:37:34 +01:00
Admin a7203dff02 Missing if 2026-03-20 01:36:22 +01:00
Admin 4387aa146e QOL Changes 2026-03-20 01:35:12 +01:00
Admin 716558c085 A lot of changes 2026-03-19 20:21:02 +01:00
Admin e89fc5b45c Update playlist and some changes 2026-03-19 19:50:15 +01:00
Admin 9f90151fc5 Changes on config and DI 2026-03-19 17:22:27 +01:00
Admin cc720e2c08 Config changes 2026-03-19 17:12:08 +01:00
Admin 4996fd019e Changes 2026-03-19 10:41:32 +01:00
Admin d9cb715622 Add DesignSettings 2026-03-19 09:41:48 +01:00
Admin bc751a467b Fix 2026-03-19 09:33:39 +01:00
Admin f5643c0ccd . 2026-03-19 09:27:22 +01:00
Admin 0c04ddf316 Remove files consumer 2026-03-19 01:20:05 +01:00
Admin 14ae57ead8 jobs and others 2026-03-19 01:09:02 +01:00
Admin f41a6c2d77 Some changes 2026-03-18 21:05:06 +01:00
Admin 28b46e3cc4 Change name 2026-03-18 20:52:11 +01:00
Admin 41b8cbfc9c Small changes 2026-03-18 19:07:01 +01:00
Admin 4f74192cb6 Changes 2026-03-18 18:59:41 +01:00
Admin 9f14bb2c86 Changes 2026-03-18 18:48:01 +01:00
Admin b1ac38d377 Changes 2026-03-18 18:08:53 +01:00
Admin afcdaea4fd username and password 2026-03-18 17:42:16 +01:00
Admin 9147c2c799 Dependency injection 2026-03-18 17:17:37 +01:00
Admin 463d1a6600 Rename 2026-03-18 16:43:34 +01:00
Admin dee4bd53ab Rename to picture 2026-03-18 16:29:19 +01:00
Admin 6ffec218b3 Rename 2026-03-18 16:15:50 +01:00
Admin b1a0eeeb22 Changes 2026-03-18 16:06:57 +01:00
Admin 9816e23401 Config 2026-03-18 15:50:18 +01:00
Admin 076f048efe Changes and fixes 2026-03-18 10:52:00 +01:00
Admin 92bd06751d Upload playlist image 2026-03-18 10:26:40 +01:00
Admin 63c89c1946 Using 2026-03-18 02:22:44 +01:00
Admin 3a45cc27d1 Uploads 2026-03-18 02:19:36 +01:00
Admin 82ddf7dea6 PictureHandler 2026-03-18 01:24:16 +01:00
Admin 28719fe4d1 First Commit 2026-03-18 01:14:49 +01:00

Diff Content Not Available