mirror of
https://github.com/bulwarkmail/native.git
synced 2026-11-05 16:08:17 +00:00
The settings list now has the account card on top, title-case group labels and 56 dp rows that show each pane's current value. About and "About & Data" were one placeholder page with a letter logo, a fixed name and a store link that pointed at GitHub releases. - About: the real logo, the app name from app.config.js, the update state, a source link that a build can set with SOURCE_CODE_URL, and rows for the server, update checks (Android), open-source licences, privacy and a prefilled GitHub issue. iPhone updates link TestFlight. - Storage & backup: usage card, offline mail, settings export/import and reset, and a Troubleshooting page for refresh and debug logging. - Sender favicons moved to Appearance, like the webmail. - The S/MIME and Plugins stub pages are gone; both are webmail plugins. The licence list is generated by `scripts/generate-licences.mjs`.
26 lines
1.0 KiB
TypeScript
26 lines
1.0 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { readFileSync } from 'node:fs';
|
|
import { join } from 'node:path';
|
|
import licences from '../licences.json';
|
|
|
|
const pkg = JSON.parse(readFileSync(join(__dirname, '..', '..', '..', 'package.json'), 'utf8'));
|
|
|
|
describe('open-source licences', () => {
|
|
it('lists every library the app ships, with its licence', () => {
|
|
const listed = new Map(licences.libraries.map((l) => [l.name, l]));
|
|
const missing = Object.keys(pkg.dependencies).filter((name) => !listed.has(name));
|
|
// Regenerate with `node scripts/generate-licences.mjs`.
|
|
expect(missing).toEqual([]);
|
|
for (const name of Object.keys(pkg.dependencies)) {
|
|
expect(listed.get(name)?.license, name).toBeTruthy();
|
|
expect(listed.get(name)?.version, name).toBe(
|
|
JSON.parse(readFileSync(join(__dirname, '..', '..', '..', 'node_modules', name, 'package.json'), 'utf8')).version,
|
|
);
|
|
}
|
|
});
|
|
|
|
it('names the app licence from package.json', () => {
|
|
expect(licences.app.license).toBe(pkg.license);
|
|
});
|
|
});
|