Commit graph

18 commits

Author SHA1 Message Date
Dave
4066c1c43c Use master template style (Arial 11pt, justified, 1.5 spacing) for appointment letter PDF 2026-08-17 22:58:51 +02:00
Dave
efa4331b99 PDF daemon + attachments for appointment emails
- New /Volumes/KIOXIA/.hermes/profiles/ysterbaard/scripts/pdfd.js
  standalone HTML->PDF daemon on localhost:3070, calls soffice via
  execSync (proven working pattern from resignation form watcher.js)
- app/api/appointments/route.ts generates acceptance-letter.pdf via
  daemon, attaches via MIME multipart/mixed
- app/api/appointments/[id]/route.ts renders signed-letter.pdf with
  embedded signature, attaches to distro mail
- Idempotency guard: skip distro if status is already mail_sent_to_all
2026-08-17 22:34:58 +02:00
Dave
8ae44e42e4 Fix signed distro: send HTML email with inline signature image (no PDF required) 2026-08-17 22:16:41 +02:00
Dave
ca697a3b19 Fix signature canvas: preventDefault on touch events, scale coords to canvas pixels 2026-08-17 22:03:07 +02:00
Dave
620a2373bb Fix signing page: show canvas unless status is signature_received or mail_sent_to_all 2026-08-17 21:57:11 +02:00
Dave
937fa922cc Remove blocking PDF generation from appointment POST (LibreOffice hangs from Next.js) 2026-08-17 21:45:36 +02:00
Dave
e8ef4589c9 Simplify appointment email: HTML body, no PDF attachment (LibreOffice spawn unreliable from Node.js) 2026-08-17 20:57:51 +02:00
Dave
cef29c7f1f Fix LibreOffice PDF output: check /private/tmp and rename to /tmp/ 2026-08-17 20:51:55 +02:00
Dave
1b120d2677 Fix LibreOffice: spawnSync array form + HOME/PATH env for Next.js server 2026-08-17 20:47:58 +02:00
Dave
ff5697507d Use spawn (not shell) for himalaya — avoids /bin/sh ETIMEDOUT 2026-08-17 20:44:45 +02:00
Dave
61c5830028 Fix himalaya command: use 'smtp send' with --mail-from/--rcpt-to flags 2026-08-17 20:31:53 +02:00
Dave
660db975e4 Increase LibreOffice timeout to 120s, add graceful fallback to text-only email 2026-08-17 20:23:02 +02:00
Dave
37d94f4241 Add company_email to EditEntityModal company form 2026-08-17 20:08:33 +02:00
Dave
b0b625414a Add company_email to company table and detail page 2026-08-17 19:19:12 +02:00
Dave
2fb979b98a Director appointment acceptance — full feature
- DirectorAppointmentTab: table + 'Acceptance Letter' modal with company/director dropdowns
- GET/POST /api/appointments: create record, generate HTML letter, convert to PDF via LibreOffice, email to director via himalaya SMTP
- PATCH /api/appointments/[id]: save signature PNG, embed in signed letter PDF, mail to all company directors
- GET /api/appointments/sign/[token]: public token lookup
- /sign/[token]/page.tsx: public signature canvas (mouse + touch)
- ysterbaard_director_appointments PB collection (requires manual schema setup)
- Section 3 'Director Appointment' now active in ResolutionExplorer
- NEXT_PUBLIC_APP_URL added to .env.local
2026-08-17 18:39:14 +02:00
Dave
59c460a3d6 feat: Check Mail button on Step 2 + check-cipc-mail API route 2026-08-11 18:33:03 +02:00
SJCoetz
adead9148f Add native Share button to registration link dialog 2026-07-30 16:38:05 +02:00
SJCoetz
bb97fef453 feat: initialize full ysterbaard frontend application
Add complete production-ready Ysterbaard PocketBase registry browser frontend:
- Next.js 14 App Router with TypeScript, Tailwind CSS, and TanStack React Query
- Secure server-side PocketBase API proxy to avoid exposing superuser tokens
- Read-only directors and companies registry browse pages with search, filtering, and pagination
- Client onboarding workflow for creating and managing client submissions
- Docker container configuration for easy deployment
- All supporting UI components, utility functions, and configuration files
2026-07-23 19:10:47 +02:00