Aller au contenu principal

ABOUT — VERSION AND SYSTEM INFORMATION

Status Implementation K2

Context​

A user filing a bug report needs the version and environment facts a maintainer requires — Katalog version, Qt and KDE Frameworks versions, operating system, language, database mode. Before this feature those facts were scattered across the UI or not shown at all, so reports arrived incomplete and the maintainer had to ask for them.

This spec covers a single action on the K3 About page that assembles those facts into a plain-text block and copies it to the clipboard, ready to paste into a bug report.

The block is designed to be pasted into a public bug tracker. That is what makes its content a boundary and not a detail: the constructional requirements below define exactly what may leave the application, and nothing else may be added to the block without changing this spec first.

Reading the requirement IDs. Each requirement has a permanent ID. IDs are never renumbered or reused; a retired requirement is marked [Removed], not deleted. Status is one of [Implemented] / [Planned] / [Backlog] / [Removed].


Scope at a glance​

In scope: one action on the K3 About page; the fixed field list of the copied block; the confirmation notification; the privacy boundary on what the block may contain.

Out of scope (non-goals): K2 — the K2 About section is unchanged. Any identifying or credential data in the block (see ABT-C1). Sending the block anywhere automatically: the user pastes it, the application never transmits it. Log collection, crash dumps, or any diagnostics beyond the field list in ABT-F2.


Operational requirements — why / for whom​

Goals in real use, independent of how they are built.

IDRequirementStatus
ABT-O1A user reporting a bug obtains, in one action, the version and environment facts a maintainer needs, without hunting through the UI for them.[Planned]
ABT-O2A user can paste that information into a public bug tracker without disclosing who they are, what their machine is called, where their data lives, or any database credential.[Planned]

Functional requirements — what the system does​

Observable behaviour that can be triggered and watched.

IDRequirementStatus
ABT-F1The About page offers an action, alongside the existing Close action, that copies a plain-text system-information block to the clipboard and confirms with a transient notification.[Planned]
ABT-F2The copied block contains exactly the fields listed in Block content below — no more, no fewer.[Planned]
ABT-F3The block is plain text, readable as-is when pasted into a bug tracker without further formatting.[Planned]

Constructional requirements — how it is built / limits / MUST-NOTs​

Boundaries and implementation constraints, not user-visible behaviour.

IDRequirementStatus
ABT-C1The block MUST NOT contain: machine hostname, user name, any filesystem path (collection, catalog, database file, image folder), any hosted-database host, port, database name, user or password, or the collection name.[Planned]
ABT-C2The block is assembled from a fixed allowlist of named fields. It MUST NOT be produced by iterating settings or .ini keys, nor by dumping a configuration object, a settings map, or any environment survey.[Planned]
ABT-C3K3 only. No core/ change: AppManager assembles the block and exposes it to QML. The K2 UI is not modified.[Planned]
ABT-C4Adding a field to the block requires updating Block content in this spec first; the field list in the code and the field list here must match.[Planned]

Block content​

The complete and exclusive field list authorised by ABT-F2.

#FieldSource
1Katalog versionKATALOG_VERSION_STRING
2Katalog release dateKATALOG_RELEASE_DATE
3Qt version — runtimeQt runtime version
4Qt version — compile-timeQt compile-time version
5KDE Frameworks versionKF6 version
6Operating system product nameQSysInfo::prettyProductName()
7Kernel typeQSysInfo::kernelType()
8Kernel versionQSysInfo::kernelVersion()
9CPU architectureQSysInfo::currentCpuArchitecture()
10UI language / locale identifierlocale identifier only
11Database modeMemory / File / Hosted
12Database schema versioncollection->dbSchemaVersion
13Display server (Qt platform plugin in use)QGuiApplication::platformName() — e.g. wayland, xcb (X11), windows, cocoa. Reports the plugin actually in use: an XWayland session forced with QT_QPA_PLATFORM=xcb shows xcb, which XDG_SESSION_TYPE would not reveal.
14Desktop environmentthe single named environment variable XDG_CURRENT_DESKTOP (e.g. KDE, GNOME). When it is empty or absent — the normal case on Windows and macOS — the field shows unknown.

Why the database mode and schema version are included​

Both were reviewed against ABT-C1 and accepted. Neither adds any disclosure beyond what the user already sees on screen: both are displayed on the Settings page (qt_quick/PageSettings.qml:115,142-154,161). The mode is a three-value enum carrying no identifying content, and Memory-mode defects are otherwise unreportable — a whole class of bugs behaves differently in Memory mode, so a report that omits the mode is usually unusable. Only the mode and the schema version are included; the database path, host, port, name, user and password are excluded by ABT-C1.

Why the display server and desktop environment are included​

Both were reviewed against ABT-C1 and ABT-C2 and accepted.

  • ABT-C1 (no identifying content). Each value comes from a small, fixed set of platform-plugin names (wayland, xcb, windows, cocoa, ...) or desktop names (KDE, GNOME, ...). Neither names the user, the machine, a path or a credential.
  • ABT-C2 (allowlist, not a survey). The display server is read from a Qt API. The desktop environment is one named environment variable, XDG_CURRENT_DESKTOP, read explicitly by name. The environment is never iterated or dumped; no other variable is read.

Without them a class of defects is unreportable: behaviour differs between Wayland and X11, and some defects are specific to one desktop (see SpecApplicationIcon.md, a Plasma Wayland-only rendering defect). Beta testers report from Windows, macOS and Linux, so the maintainer cannot assume the reporter's display server or desktop.

ABT-C1 blocks the leaks known today. ABT-C2 blocks the ones that would otherwise be introduced later by a convenience change, such as serialising the settings object wholesale.


User-visible text​

Approved byte-for-byte. Both strings are new: no K2 equivalent exists (K2 has no such action) and no existing K3 string fits. The explicit label was chosen over a shorter "Copy to clipboard", and the matching longer notification over the shorter "<X> copied to clipboard" house form — both are deliberate.

ElementString
Action labelCopy version and system information
Confirmation notificationVersion and system information copied to clipboard

The notification is a transient success message and uses showPassiveNotification(...), per SpecValidationRules.md and the Kirigami HIG.


Manual test charter​

For each row: set up the stated condition, run the operation, confirm the result.

  • ABT-F1 — Open the About page. The action is present next to Close. Trigger it: the notification Version and system information copied to clipboard appears and the clipboard is not empty.
  • ABT-F2 — Paste the block into a text editor. Exactly the fourteen fields of Block content are present; count them. No fifteenth field.
  • ABT-F3 — Paste the block into a plain-text field. It is readable as-is, with no markup artefacts and no truncated lines.
  • ABT-C1 — Search the pasted block for the machine hostname, the user name, and any / or \ path fragment: none is present. Then open a Hosted collection with host, port, database name, user and password filled in, copy again, and search the block for each of those five values and for the collection name: none is present.
  • ABT-C1 / ABT-F2 (mode and schema) — Copy the block in Memory mode, then in File mode, then in Hosted mode. Each block states the correct mode and the schema version, and nothing more about the database.
  • ABT-F2 (display server) — On Linux, copy the block once in a Wayland session, then relaunch with QT_QPA_PLATFORM=xcb and copy again. The Display server line shows wayland, then xcb.
  • ABT-F2 (desktop environment) — On Linux, the Desktop environment line matches echo $XDG_CURRENT_DESKTOP. On Windows or macOS it shows unknown.
  • ABT-C2 — Add an unrelated key to the collection .ini by hand, then copy the block. The new key does not appear, confirming the block is an allowlist and not a settings dump.
  • ABT-C3 — Confirm the K2 About section is unchanged and that the feature required no core/ change.