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:
@@ -69,7 +69,7 @@ export async function requestGdprExport(input: RequestExportInput): Promise<Requ
|
||||
});
|
||||
if (!primary) {
|
||||
throw new ValidationError(
|
||||
'Client has no primary email contact — provide an emailOverride or add one before exporting.',
|
||||
'Client has no primary email contact - provide an emailOverride or add one before exporting.',
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -132,7 +132,7 @@ export async function processGdprExportJob(input: ProcessJobInput): Promise<void
|
||||
const html = renderBundleHtml(bundle);
|
||||
|
||||
// Stream a ZIP into a buffer. Receipts/contracts are not included
|
||||
// here — they live on file rows referenced by the bundle and would
|
||||
// here - they live on file rows referenced by the bundle and would
|
||||
// bloat the archive. Add them later if Article-15 requests demand.
|
||||
const zip = archiver('zip', { zlib: { level: 9 } });
|
||||
const sink = new PassThrough();
|
||||
@@ -212,7 +212,7 @@ async function emailExport(input: ProcessJobInput, storageKey: string): Promise<
|
||||
if (!recipient) {
|
||||
logger.warn(
|
||||
{ exportId: input.exportId, clientId: input.clientId },
|
||||
'GDPR export ready but no email recipient — skipping send',
|
||||
'GDPR export ready but no email recipient - skipping send',
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -227,8 +227,8 @@ async function emailExport(input: ProcessJobInput, storageKey: string): Promise<
|
||||
<p>Hello ${escapeHtml(name)},</p>
|
||||
<p>You requested a copy of the personal data we hold about you. The export is ready and contains:</p>
|
||||
<ul>
|
||||
<li><code>client.json</code> — machine-readable data dump</li>
|
||||
<li><code>client.html</code> — same data as a printable web page</li>
|
||||
<li><code>client.json</code> - machine-readable data dump</li>
|
||||
<li><code>client.html</code> - same data as a printable web page</li>
|
||||
</ul>
|
||||
<p><a href="${url}">Download the export (ZIP, expires ${escapeHtml(expiry)})</a></p>
|
||||
<p>If you have any questions, reply to this email.</p>
|
||||
@@ -254,7 +254,7 @@ function escapeHtml(s: unknown): string {
|
||||
.replace(/'/g, ''');
|
||||
}
|
||||
|
||||
/** Lists exports for a client (most-recent first) — feeds the admin "history" UI. */
|
||||
/** Lists exports for a client (most-recent first) - feeds the admin "history" UI. */
|
||||
export async function listClientExports(clientId: string, portId: string) {
|
||||
const client = await db.query.clients.findFirst({ where: eq(clients.id, clientId) });
|
||||
if (!client || client.portId !== portId) throw new NotFoundError('Client');
|
||||
|
||||
Reference in New Issue
Block a user