feat(settings): About section — vendor, versions, license, contact
Some checks are pending
Security / Security check (push) Waiting to run
Some checks are pending
Security / Security check (push) Waiting to run
Procurement personas found no vendor, version, license, or support information anywhere in the app (a hard checklist fail for regulated buyers). Settings gains an About category: product name, Studio + running-hub version, vendor Flemming.AI, author, Apache 2.0 license, contact address, and the docs URL — every value selectable and one-click copyable. Studio version constant moved to data/about_info.dart so sidebar tag and About can never drift. Bumps Studio to 0.71.0. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
c436e12601
commit
c253f5d23e
9 changed files with 352 additions and 5 deletions
14
lib/data/about_info.dart
Normal file
14
lib/data/about_info.dart
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// Product identity shown in Settings → About and the sidebar
|
||||
// version tag. One place to bump so procurement-facing facts
|
||||
// (vendor, license, contact) can never drift between surfaces.
|
||||
|
||||
/// Studio's own build version. Bump on every UI release so the
|
||||
/// running app self-identifies.
|
||||
const String kStudioVersion = '0.71.0';
|
||||
|
||||
const String kProductName = 'Ch∆In Studio';
|
||||
const String kVendorName = 'Flemming.AI (F∆I)';
|
||||
const String kAuthorName = 'Dr. Stefan Flemming';
|
||||
const String kLicenseName = 'Apache 2.0';
|
||||
const String kContactEmail = 'chain@flemming.ai';
|
||||
const String kDocsUrl = 'https://chain.flemming.ai';
|
||||
|
|
@ -1187,6 +1187,22 @@ class HubService {
|
|||
}
|
||||
|
||||
/// Composite "doctor" snapshot. One round-trip per piece, run
|
||||
/// Version string of the RUNNING hub (from CheckUpdate's
|
||||
/// local_version — a local RPC field; the manifest fetch result
|
||||
/// is ignored). Empty when the hub is unreachable. Used by
|
||||
/// Settings → About.
|
||||
Future<String> hubVersion() async {
|
||||
try {
|
||||
final r = await _client.checkUpdate().timeout(
|
||||
const Duration(seconds: 2),
|
||||
onTimeout: () => CheckUpdateResponse(),
|
||||
);
|
||||
return r.localVersion;
|
||||
} catch (_) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/// in parallel so the page populates fast.
|
||||
Future<DoctorSnapshot> doctor() async {
|
||||
final results = await Future.wait([
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue