- useLicenseStore: load/activate/deactivate with tier badge and key input - useDataStore: createBackup with file count and size display - usePrivacyStore: BYOK panel logic (dismissal snapshot tracks new backends), telemetry toggle (self-hosted) and master-off/usage/content controls (cloud) - Views: LicenseView (cloud/self-hosted split), LicenseSelfHosted, LicenseCloud, DataView, PrivacyView, DeveloperView - dev-api.py: /api/settings/license, /activate, /deactivate; /api/settings/data/backup/create; /api/settings/privacy GET+PUT; /api/settings/developer GET, /tier PUT, /hf-token PUT+test, /wizard-reset, /export-classifier; _load_user_config/_save_user_config helpers; CONFIG_DIR - TDD: 10/10 store tests passing (license×3, data×2, privacy×5)
18 lines
539 B
Vue
18 lines
539 B
Vue
<script setup lang="ts">
|
|
import { storeToRefs } from 'pinia'
|
|
import { useAppConfigStore } from '../../stores/appConfig'
|
|
|
|
const { tier } = storeToRefs(useAppConfigStore())
|
|
</script>
|
|
|
|
<template>
|
|
<div class="form-section">
|
|
<h2>Plan</h2>
|
|
<div class="license-info">
|
|
<span class="tier-badge">{{ tier?.toUpperCase() ?? 'FREE' }}</span>
|
|
</div>
|
|
<p class="section-note">
|
|
Manage your subscription at <a href="https://circuitforge.tech/account" target="_blank">circuitforge.tech/account</a>
|
|
</p>
|
|
</div>
|
|
</template>
|