discovery-media-player 0.1.90 → 0.1.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "discovery-media-player",
3
- "version": "0.1.90",
3
+ "version": "0.1.91",
4
4
  "description": "Self-hosted document viewer: per-recipient tracked links, reading analytics, live presentation. The core knows nothing about the application hosting it — everything it borrows arrives through an injected context.",
5
5
  "keywords": [
6
6
  "pdf-viewer",
package/supabase/init.sql CHANGED
@@ -240,9 +240,15 @@ drop trigger if exists dpm_bump_modseq on public.doc_presentation_messages;
240
240
  create trigger dpm_bump_modseq
241
241
  before insert or update on public.doc_presentation_messages
242
242
  for each row execute function public.player_bump_message_seq();
243
- update public.doc_presentation_messages
243
+ -- ⚠️ Le rattrapage EXCLUT les présentations scellées (0007/0010) : le trigger dpm_archive_scellee lève
244
+ -- sur toute écriture dans une présentation gelée, et une seule de ses lignes ferait échouer l'install.
245
+ update public.doc_presentation_messages m
244
246
  set mod_seq = nextval('public.doc_presentation_messages_modseq')
245
- where mod_seq is null;
247
+ where m.mod_seq is null
248
+ and not exists (
249
+ select 1 from public.doc_presentations p
250
+ where p.slug = m.slug and p.active = false and p.control_hash is null
251
+ );
246
252
  create index if not exists idx_dpm_slug_modseq
247
253
  on public.doc_presentation_messages (slug, mod_seq);
248
254
 
@@ -47,10 +47,20 @@ create trigger dpm_bump_modseq
47
47
  for each row execute function public.player_bump_message_seq();
48
48
 
49
49
  -- Rattrapage des lignes déjà présentes : sans `mod_seq`, elles seraient invisibles au différentiel.
50
- -- Une seule fois, dans l'ordre d'insertion, pour donner à chacune un rang cohérent.
51
- update public.doc_presentation_messages
50
+ -- ⚠️ IL RESPECTE LE SCELLÉ D'ARCHIVE (0007/0010). Cet update écrit CHAQUE ligne — or le trigger
51
+ -- dpm_archive_scellee LÈVE sur toute écriture dans une présentation scellée (active=false ET
52
+ -- control_hash IS NULL). Une seule ligne d'une présentation scellée ferait échouer la migration
53
+ -- ENTIÈRE. On exclut donc ces lignes — une présentation scellée est GELÉE, y compris son rang : ses
54
+ -- messages restent sans mod_seq (historiques, jamais resynchronisés en direct, servis par la charge
55
+ -- complète). Deux gardes correctes — le scellé (0007) et ce rattrapage — dont la COMPOSITION
56
+ -- bloquerait sans cette exclusion, et qu'aucun des deux fichiers ne pouvait prévoir seul.
57
+ update public.doc_presentation_messages m
52
58
  set mod_seq = nextval('public.doc_presentation_messages_modseq')
53
- where mod_seq is null;
59
+ where m.mod_seq is null
60
+ and not exists (
61
+ select 1 from public.doc_presentations p
62
+ where p.slug = m.slug and p.active = false and p.control_hash is null
63
+ );
54
64
 
55
65
  -- La lecture différentielle `slug=eq.X&mod_seq=gt.N&order=mod_seq.asc` doit rester rapide.
56
66
  create index if not exists idx_dpm_slug_modseq