MechaCat02
e7c0485dbf
feat(modules): GroupFilesService + files::shared_collection handle (§11.6 files C3)
- shared/group_files: GroupFilesService trait (mirror FilesService, no
group id arg — owner resolved from cx.app_id), GroupFilesError (clone of
FilesError + CollectionNotShared) with From<FilesError>, Noop.
- services: group_files field + with_group_files setter (default Noop).
- group_files_service: GroupFilesServiceImpl — owning_group via the
registry resolver (kind=files) → CollectionNotShared; reads open
(script_gate), writes fail closed (script_gate_require_principal);
reuses validate_files_collection + the NewFile/FileUpdate validators +
sanitize_stored_content_type + the per-file size cap; no events.
- sdk/files: GroupFilesHandle + files::shared_collection(name) + the
create/head/get/update/delete/list group methods (Blob in/out).
- picloud: construct FsGroupFilesRepo (sharing the files root + size cap)
+ GroupFilesServiceImpl, .with_group_files(...).
Unit tests: off-chain → CollectionNotShared; anon read OK / anon write
Forbidden; oversize → TooLarge.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 19:46:39 +02:00
..
2026-06-24 19:59:00 +02:00
2026-06-24 19:59:00 +02:00
2026-06-12 17:15:09 +02:00
2026-06-01 21:29:59 +02:00
2026-06-07 20:00:36 +02:00
2026-06-11 20:54:34 +02:00
2026-05-25 21:03:05 +02:00
2026-05-30 18:40:09 +02:00
2026-06-01 22:01:42 +02:00
2026-06-13 15:01:04 +02:00
2026-06-12 18:14:36 +02:00
2026-06-30 08:04:30 +02:00
2026-06-30 19:46:39 +02:00
2026-06-29 22:26:43 +02:00
2026-06-24 19:59:00 +02:00
2026-06-07 21:02:57 +02:00
2026-06-24 19:59:00 +02:00
2026-06-01 22:01:42 +02:00
2026-06-26 07:17:33 +02:00
2026-06-07 20:00:36 +02:00
2026-06-30 19:46:39 +02:00
2026-05-23 00:16:32 +02:00
2026-06-29 20:07:59 +02:00
2026-06-13 09:59:24 +02:00
2026-06-07 20:00:36 +02:00
2026-06-07 20:00:36 +02:00
2026-06-04 20:18:50 +02:00
2026-06-04 20:18:50 +02:00
2026-06-23 19:36:40 +02:00
2026-05-23 16:26:12 +02:00
2026-06-26 07:22:25 +02:00
2026-06-03 20:23:18 +02:00
2026-06-04 21:37:17 +02:00
2026-06-30 19:46:39 +02:00
2026-06-04 20:18:50 +02:00
2026-06-06 19:08:21 +02:00
2026-06-13 09:59:24 +02:00
2026-06-02 22:04:21 +02:00
2026-06-24 20:59:23 +02:00
2026-06-07 10:27:53 +02:00