This commit is contained in:
Harivansh Rathi 2026-04-01 02:28:45 +00:00
parent 12c53f3515
commit dc7969e579
37 changed files with 177 additions and 177 deletions

View file

@ -2,13 +2,13 @@
<info xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
<id>betternascontrolplane</id>
<name>aiNAS Control Plane</name>
<summary>Thin aiNAS shell app for Nextcloud integration</summary>
<description>Provides aiNAS-branded entry points inside Nextcloud while delegating business logic to the aiNAS control plane.</description>
<name>betternas Control Plane</name>
<summary>Thin betternas shell app for Nextcloud integration</summary>
<description>Provides betternas-branded entry points inside Nextcloud while delegating business logic to the betternas control plane.</description>
<version>0.1.0</version>
<licence>AGPL-3.0-or-later</licence>
<author homepage="https://betternas.local">aiNAS</author>
<namespace>AinasControlplane</namespace>
<author homepage="https://betternas.local">betternas</author>
<namespace>betternasControlplane</namespace>
<category>integration</category>
<dependencies>
<nextcloud min-version="31" max-version="33"/>
@ -16,15 +16,15 @@
<navigations>
<navigation>
<id>betternascontrolplane</id>
<name>aiNAS</name>
<name>betternas</name>
<route>betternascontrolplane.page.index</route>
<icon>app.svg</icon>
<type>link</type>
</navigation>
</navigations>
<settings>
<admin>OCA\AinasControlplane\Settings\Admin</admin>
<admin-section>OCA\AinasControlplane\Settings\AdminSection</admin-section>
<admin>OCA\betternasControlplane\Settings\Admin</admin>
<admin-section>OCA\betternasControlplane\Settings\AdminSection</admin-section>
</settings>
</info>

View file

@ -1,10 +1,10 @@
{
"name": "betternas/betternascontrolplane",
"description": "aiNAS Nextcloud shell app",
"description": "betternas Nextcloud shell app",
"license": "AGPL-3.0-or-later",
"autoload": {
"psr-4": {
"OCA\\AinasControlplane\\": "lib/"
"OCA\\betternasControlplane\\": "lib/"
}
},
"require": {

View file

Before

Width:  |  Height:  |  Size: 292 B

After

Width:  |  Height:  |  Size: 292 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 292 B

After

Width:  |  Height:  |  Size: 292 B

Before After
Before After

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace OCA\AinasControlplane\AppInfo;
namespace OCA\betternasControlplane\AppInfo;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace OCA\AinasControlplane\Controller;
namespace OCA\betternasControlplane\Controller;
use OCA\AinasControlplane\AppInfo\Application;
use OCA\AinasControlplane\Service\ControlPlaneClient;
use OCA\betternasControlplane\AppInfo\Application;
use OCA\betternasControlplane\Service\ControlPlaneClient;
use OCP\AppFramework\Http\Attribute\ApiRoute;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\DataResponse;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace OCA\AinasControlplane\Controller;
namespace OCA\betternasControlplane\Controller;
use OCA\AinasControlplane\AppInfo\Application;
use OCA\AinasControlplane\Service\ControlPlaneClient;
use OCA\AinasControlplane\Service\ControlPlaneConfig;
use OCA\betternasControlplane\AppInfo\Application;
use OCA\betternasControlplane\Service\ControlPlaneClient;
use OCA\betternasControlplane\Service\ControlPlaneConfig;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
@ -33,7 +33,7 @@ class PageController extends Controller {
Application::APP_ID,
'index',
[
'appName' => 'aiNAS Control Plane',
'appName' => 'betternas Control Plane',
'controlPlaneUrl' => $this->controlPlaneConfig->getBaseUrl(),
'snapshot' => $this->controlPlaneClient->fetchSnapshot(),
],

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace OCA\AinasControlplane\Service;
namespace OCA\betternasControlplane\Service;
use OCP\Http\Client\IClientService;
use OCP\Http\Client\IResponse;
@ -33,7 +33,7 @@ class ControlPlaneClient {
'version' => $versionResponse['body'],
];
} catch (\Throwable $exception) {
$this->logger->warning('Failed to reach aiNAS control plane', [
$this->logger->warning('Failed to reach betternas control plane', [
'exception' => $exception,
'url' => $baseUrl,
]);

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace OCA\AinasControlplane\Service;
namespace OCA\betternasControlplane\Service;
use OCA\AinasControlplane\AppInfo\Application;
use OCA\betternasControlplane\AppInfo\Application;
use OCP\IAppConfig;
class ControlPlaneConfig {
@ -14,7 +14,7 @@ class ControlPlaneConfig {
}
public function getBaseUrl(): string {
$environmentUrl = getenv('AINAS_CONTROL_PLANE_URL');
$environmentUrl = getenv('betternas_CONTROL_PLANE_URL');
if (is_string($environmentUrl) && $environmentUrl !== '') {
return rtrim($environmentUrl, '/');
}

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace OCA\AinasControlplane\Settings;
namespace OCA\betternasControlplane\Settings;
use OCA\AinasControlplane\AppInfo\Application;
use OCA\AinasControlplane\Service\ControlPlaneClient;
use OCA\AinasControlplane\Service\ControlPlaneConfig;
use OCA\betternasControlplane\AppInfo\Application;
use OCA\betternasControlplane\Service\ControlPlaneClient;
use OCA\betternasControlplane\Service\ControlPlaneConfig;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\Settings\ISettings;

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace OCA\AinasControlplane\Settings;
namespace OCA\betternasControlplane\Settings;
use OCA\AinasControlplane\AppInfo\Application;
use OCA\betternasControlplane\AppInfo\Application;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Settings\IIconSection;
@ -21,7 +21,7 @@ class AdminSection implements IIconSection {
}
public function getName(): string {
return $this->l->t('aiNAS');
return $this->l->t('betternas');
}
public function getPriority(): int {

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
use OCA\AinasControlplane\AppInfo\Application;
use OCA\betternasControlplane\AppInfo\Application;
use OCP\Util;
Util::addStyle(Application::APP_ID, 'betternascontrolplane');
@ -15,9 +15,9 @@ $version = $snapshot['version']['version'] ?? 'unreachable';
<div class="betternas-shell betternas-shell--admin">
<div class="betternas-shell__hero">
<p class="betternas-shell__eyebrow">Admin settings</p>
<h1 class="betternas-shell__title">aiNAS control-plane wiring</h1>
<h1 class="betternas-shell__title">betternas control-plane wiring</h1>
<p class="betternas-shell__copy">
The local scaffold wires this app to the control plane through the <code>AINAS_CONTROL_PLANE_URL</code> environment variable in the Nextcloud container.
The local scaffold wires this app to the control plane through the <code>betternas_CONTROL_PLANE_URL</code> environment variable in the Nextcloud container.
</p>
</div>

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
use OCA\AinasControlplane\AppInfo\Application;
use OCA\betternasControlplane\AppInfo\Application;
use OCP\Util;
Util::addStyle(Application::APP_ID, 'betternascontrolplane');
@ -15,10 +15,10 @@ $error = $snapshot['error'] ?? null;
<div class="betternas-shell">
<div class="betternas-shell__hero">
<p class="betternas-shell__eyebrow">aiNAS inside Nextcloud</p>
<p class="betternas-shell__eyebrow">betternas inside Nextcloud</p>
<h1 class="betternas-shell__title"><?php p($_['appName']); ?></h1>
<p class="betternas-shell__copy">
This shell app stays intentionally thin. It exposes aiNAS entry points inside Nextcloud and delegates business logic to the external control-plane service.
This shell app stays intentionally thin. It exposes betternas entry points inside Nextcloud and delegates business logic to the external control-plane service.
</p>
</div>
@ -42,7 +42,7 @@ $error = $snapshot['error'] ?? null;
<h2>Boundary</h2>
<ul>
<li>Nextcloud provides file and client primitives.</li>
<li>aiNAS owns control-plane policy and orchestration.</li>
<li>betternas owns control-plane policy and orchestration.</li>
<li>The shell app only adapts between the two.</li>
</ul>
</section>