feat(projects): gate Project Overview behind a projects feature flag + cockpit email actions
- Migration 120 seeds the projects flag (default OFF), idempotent. - Backend feature-flags whitelist + DEFAULT_FLAGS + clients derivation. - adminProjects routes 403 PROJECTS_DISABLED when the flag is off. - projectService email actions (resend/cancel/retry/send-now) + routes. - Frontend flag type, DEFAULT_FLAGS, Features tab card (en+de).
This commit is contained in:
@@ -16,6 +16,7 @@ import {
|
||||
Briefcase,
|
||||
Wrench,
|
||||
Calculator,
|
||||
FolderKanban,
|
||||
} from 'lucide-react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Button, Card } from '../../../components/common';
|
||||
@@ -291,6 +292,20 @@ export const FeaturesTab: React.FC = () => {
|
||||
enabled={staged.hoursLogging}
|
||||
onToggle={(next) => setFlag('hoursLogging', next)}
|
||||
/>
|
||||
|
||||
<FeatureCard
|
||||
icon={FolderKanban}
|
||||
title={t('settings.features.projects.title', 'Projects')}
|
||||
description={t(
|
||||
'settings.features.projects.description',
|
||||
'Admin-only grouping layer above events. Bundle several events under one project and open a 360° Project Overview cockpit — milestone timeline plus a dated feed of every email (with the actual sent preview + resend/cancel/retry actions), quote, contract, invoice, gallery and logged hour. Adds a "book to project" control when logging hours. Customers never see projects.',
|
||||
)}
|
||||
status="new"
|
||||
statusLabel={statusLabel('new')}
|
||||
sidebarLabel={t('settings.features.projects.sidebar', 'Overview')}
|
||||
enabled={staged.projects}
|
||||
onToggle={(next) => setFlag('projects', next)}
|
||||
/>
|
||||
</Section>
|
||||
|
||||
{/* Insights & Access */}
|
||||
|
||||
Reference in New Issue
Block a user