Files
speedtest/lib/Settings/Personal.php
T
neonoverlord cf7836e1f9 settings: move out of the app menu and into Settings -> Personal
Brock's call, and it is the right one: this is a utility, not a destination.
Nobody opens a speedtest the way they open Files or Mail. The app menu is for
places you go; Settings is for things you check.

Registers an IIconSection + ISettings pair and drops <navigations> entirely.

The settings template is a SEPARATE file with NO #app-content wrapper, and that
is deliberate: the settings shell supplies its own layout, so reusing the
app-menu template nests two layout containers and breaks the width. Same trap as
the frame issue, mirrored — one context needs the wrapper, the other must not
have it. Both templates carry a comment saying which is which.

/apps/speedtest/ still resolves for anyone who bookmarked it; it just no longer
occupies a slot in the menu.
2026-08-06 08:12:28 -07:00

35 lines
945 B
PHP

<?php
declare(strict_types=1);
namespace OCA\Speedtest\Settings;
use OCA\Speedtest\AppInfo\Application;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\Settings\ISettings;
use OCP\Util;
/**
* Lives under Settings -> Personal, not in the app menu.
*
* It is a utility, not a destination: nobody opens a speedtest the way they
* open Files or Mail. The app menu is for places you go; settings is for
* things you check. (Brock, 2026-08-06.)
*/
class Personal implements ISettings {
public function getForm(): TemplateResponse {
Util::addScript(Application::APP_ID, 'speedtest');
Util::addStyle(Application::APP_ID, 'style');
return new TemplateResponse(Application::APP_ID, 'settings-personal', [], TemplateResponse::RENDER_AS_BLANK);
}
public function getSection(): string {
return 'speedtest';
}
/** Only one form in this section, so the order is academic. */
public function getPriority(): int {
return 50;
}
}