chore(style): codebase em-dash sweep + minor layout polish
Replaces every em-dash and en-dash with regular ASCII hyphens across comments, JSX strings, and dev-facing logs. Mostly cosmetic but stops the inconsistent mix that crept in over the last few months (some files used em-dashes in comments, others didn't, some used both). Bundles two small dashboard-layout tweaks that touch a couple of already-modified files: - (dashboard)/layout.tsx main padding goes from p-6 to pt-3 px-6 pb-6 so page content sits closer to the topbar. - Sidebar now receives the ports list it needs for the footer port switcher. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,7 +13,7 @@ interface RecurringJobDef {
|
||||
*/
|
||||
export async function registerRecurringJobs(): Promise<void> {
|
||||
const recurring: RecurringJobDef[] = [
|
||||
// Documenso signature fallback poll — primary is webhooks, this is safety net
|
||||
// Documenso signature fallback poll - primary is webhooks, this is safety net
|
||||
{ queue: 'documents', name: 'signature-poll', pattern: '0 */6 * * *' },
|
||||
|
||||
// Reminder checks
|
||||
@@ -37,10 +37,10 @@ export async function registerRecurringJobs(): Promise<void> {
|
||||
// Session cleanup
|
||||
{ queue: 'maintenance', name: 'session-cleanup', pattern: '0 4 * * *' },
|
||||
|
||||
// Report scheduler — checks every minute for reports due to run
|
||||
// Report scheduler - checks every minute for reports due to run
|
||||
{ queue: 'reports', name: 'report-scheduler', pattern: '* * * * *' },
|
||||
|
||||
// Notification digest — configurable per user; placeholder fires hourly
|
||||
// Notification digest - configurable per user; placeholder fires hourly
|
||||
// TODO(L2): make per-user schedule configurable (read from user_settings)
|
||||
{ queue: 'email', name: 'notification-digest', pattern: '0 * * * *' },
|
||||
|
||||
@@ -53,7 +53,7 @@ export async function registerRecurringJobs(): Promise<void> {
|
||||
// Phase B: analytics snapshot warm
|
||||
{ queue: 'maintenance', name: 'analytics-refresh', pattern: '*/15 * * * *' },
|
||||
|
||||
// Phase 3d: GDPR Article 17 — actually delete expired export bundles
|
||||
// Phase 3d: GDPR Article 17 - actually delete expired export bundles
|
||||
{ queue: 'maintenance', name: 'gdpr-export-cleanup', pattern: '0 4 * * *' },
|
||||
// Phase 3b: AI usage ledger retention (90-day rolling window)
|
||||
{ queue: 'maintenance', name: 'ai-usage-retention', pattern: '0 5 * * *' },
|
||||
|
||||
@@ -27,7 +27,7 @@ interface DraftResult {
|
||||
async function generateEmailDraft(payload: GenerateEmailDraftPayload): Promise<DraftResult> {
|
||||
const { interestId, clientId, portId, context, additionalInstructions } = payload;
|
||||
|
||||
// Fetch data by IDs in the worker — never trust PII from the queue payload
|
||||
// Fetch data by IDs in the worker - never trust PII from the queue payload
|
||||
const { db } = await import('@/lib/db');
|
||||
const { interests } = await import('@/lib/db/schema/interests');
|
||||
const { clients } = await import('@/lib/db/schema/clients');
|
||||
@@ -36,7 +36,7 @@ async function generateEmailDraft(payload: GenerateEmailDraftPayload): Promise<D
|
||||
const { emailThreads } = await import('@/lib/db/schema/email');
|
||||
const { and, eq, desc } = await import('drizzle-orm');
|
||||
|
||||
// Fetch interest, client, berth — both lookups port-scoped so a
|
||||
// Fetch interest, client, berth - both lookups port-scoped so a
|
||||
// crafted job payload cannot exfiltrate foreign-tenant data.
|
||||
const [interest, client] = await Promise.all([
|
||||
db.query.interests.findFirst({
|
||||
|
||||
@@ -11,7 +11,7 @@ export const importWorker = new Worker(
|
||||
// TODO(L2): implement import job handlers
|
||||
// - CSV client import
|
||||
// - Excel berth spec import
|
||||
// - Note: maxAttempts=1 — imports are idempotent, user retries manually
|
||||
// - Note: maxAttempts=1 - imports are idempotent, user retries manually
|
||||
},
|
||||
{
|
||||
connection: { url: process.env.REDIS_URL! } as ConnectionOptions,
|
||||
|
||||
@@ -73,13 +73,13 @@ export const webhooksWorker = new Worker(
|
||||
const { createNotification } = await import('@/lib/services/notifications.service');
|
||||
const { eq, and } = await import('drizzle-orm');
|
||||
|
||||
// 1. Fetch webhook — skip if deleted
|
||||
// 1. Fetch webhook - skip if deleted
|
||||
const webhook = await db.query.webhooks.findFirst({
|
||||
where: eq(webhooks.id, webhookId),
|
||||
});
|
||||
|
||||
if (!webhook) {
|
||||
logger.info({ webhookId }, 'Webhook deleted — skipping delivery');
|
||||
logger.info({ webhookId }, 'Webhook deleted - skipping delivery');
|
||||
await db.delete(webhookDeliveries).where(eq(webhookDeliveries.id, deliveryId));
|
||||
return;
|
||||
}
|
||||
@@ -92,7 +92,7 @@ export const webhooksWorker = new Worker(
|
||||
if (process.env.EMAIL_REDIRECT_TO) {
|
||||
logger.info(
|
||||
{ webhookId, deliveryId, url: webhook.url },
|
||||
'Webhook delivery skipped (EMAIL_REDIRECT_TO is set — outbound comms are paused)',
|
||||
'Webhook delivery skipped (EMAIL_REDIRECT_TO is set - outbound comms are paused)',
|
||||
);
|
||||
await db
|
||||
.update(webhookDeliveries)
|
||||
@@ -227,7 +227,7 @@ export const webhooksWorker = new Worker(
|
||||
|
||||
logger.error(
|
||||
{ webhookId, deliveryId, event, attempt },
|
||||
'Webhook delivery permanently failed — dead_letter',
|
||||
'Webhook delivery permanently failed - dead_letter',
|
||||
);
|
||||
|
||||
// Notify all super admins
|
||||
|
||||
Reference in New Issue
Block a user