T-HUB/apps/api/migrations
glass beadian e7e703c105 Integrate group files: nullable room for uploads, archive class, claim idempotency, upload route
Wires the three parallel group-cloud tracks to one surface and fixes the
seams between them:

- chat_media_archive.room_id becomes nullable (direct web uploads have no
  Matrix room yet — the contract's null-event pattern extends to the room);
  core GroupFile.roomId and ArchiveEntryInput.roomId follow.
- mime_class gains 'archive' (zip) across the 029 CHECK, validation
  MIME_CLASSES and the bot classifier — one vocabulary everywhere.
- registerArchiveEntry claim keys are null-safe for room-less uploads.
- New: POST /files/groups/:groupId/upload — FileInterceptor (20 MiB) streams
  through magic-byte sniffing, library-safe naming, oCIS upload and the
  metadata index, behind group-membership ACL (Owner/Admin bypass).
- safeFileName/sniffMime promoted to packages/core (file-names.ts,
  file-mime.ts) so the bot and the api share one implementation; the bot's
  local modules become re-export shims; @types/node added to core.

Verified: api typecheck clean, group-files 22/22, bot 74/74, web typecheck
clean; 029 re-applied clean on a fresh scratch DB (room_id nullable,
archive class, claim_key unique all confirmed in the catalog).
2026-10-11 10:09:24 +00:00
..
001_tenants.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
002_rbac_seed.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
003_app_role.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
004_policy_nullif.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
005_epoch_fix.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
006_publishing.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
007_auth.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
008_groups.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
009_video.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
010_audit_hash_v2.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
012_live_sources.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
013_production.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
014_live_chat.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
015_archive.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
016_username_auth.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
017_invite_links.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
018_publishing_execution.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
019_publishing_integration.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
020_analytics.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
021_stream_columns.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
022_live_destinations.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
023_virtual_channel_import.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
024_chatgov.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
025_archive_search.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
025_chatgov_p2.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
026_columns_p1.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
027_intake.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
028_instance_settings.sql Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
029_group_files.sql Integrate group files: nullable room for uploads, archive class, claim idempotency, upload route 2026-10-11 10:09:24 +00:00