feat(meditate): the library's accesses name nobody, and the privacy page says so

An access to the library's files now holds from the hour begun, so
everyone given one within the same hour gets the same and a fetch can't
be told apart by account. The privacy page says what the library means
for people: signed in alone, fetched naming no account, what they
listened to sealed. ADR 0038, D16.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-03 16:47:23 +01:00
commit 0b6f27d278
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
2 changed files with 44 additions and 2 deletions

View file

@ -54,6 +54,10 @@ void main() {
expect(english, contains('Google'));
expect(german, contains('Spracherkennung'));
expect(german, contains('Google'));
// The library (D16): for people signed in, fetched naming nobody.
expect(english, contains('library'));
expect(english, contains('names no account'));
expect(german, contains('Bibliothek'));
});
test('its basics name the app it serves, `meditate`, so only Meditate '

View file

@ -119,6 +119,19 @@ items:
await expired.drain<void>();
});
test('an access names nobody: everyone given one within the same hour '
'gets the same', () {
final hour = DateTime.utc(2026, 11, 3, 14);
final early = access.issue(hour.add(const Duration(minutes: 1)));
final late = access.issue(hour.add(const Duration(minutes: 59)));
expect(late.token, early.token);
expect(early.until, hour.add(LibraryFileAccess.lifetime));
expect(
access.issue(hour.add(const Duration(minutes: 61))).token,
isNot(early.token),
);
});
test('serves only the files the manifest names, by their served names: '
'a path of the folder, or one out of it, is no such name', () async {
for (final path in [