Gjermund Høsøien Wiggen
b2423f2821
feat: inbox-style ticket rows, Sheet detail slide-over, gradient New Ticket button
2026-06-07 22:34:27 +02:00
Gjermund Høsøien Wiggen
b05eb8b2d4
feat: add sidebar collapse/expand, theme-toggle, theme-aware colors
2026-06-07 22:34:26 +02:00
Gjermund Høsøien Wiggen
10005799fb
feat: add theme-toggle component with next-themes sun/moon icons
2026-06-07 22:34:26 +02:00
Gjermund Høsøien Wiggen
87bd6997e3
Add light mode support (next-themes), JetBrains Mono font, OpenType features
...
- layout.tsx: ThemeProvider from next-themes, light mode DEFAULT, JetBrains_Mono font
- globals.css: font-mono pointing to correct variable, font-feature-settings cv01+ss03 on body
- next-themes package installed
- Build passes with zero errors
2026-06-07 22:29:52 +02:00
Gjermund Høsøien Wiggen
77860eb6c4
Redesign: Linear-inspired dark mode frontend
...
Complete rewrite of all pages:
- layout.tsx: App shell with 240px sidebar (saved views, queue list, admin link)
- app-shell.tsx: Client sidebar component with route highlighting + counts
- page.tsx: Sleek ticket list with filter chips (All/Open/In progress/Resolved), search bar, status dots, assignee avatars, skeleton loading
- tickets/[id]/page.tsx: Two-panel conversation layout — message thread (left) + properties sidebar (right) with status change, scrip preview, reply box
- admin/page.tsx: Suspense-wrapped admin with tabs in sheet panels
- command-palette.tsx: Cmd+K search with keyboard navigation
Design tokens from Linear:
- bg-[#08090a] canvas, bg-[#0f1011] panels, bg-[#191a1b] cards
- text-[#f7f8f8] primary, text-[#d0d6e0] secondary, text-[#8a8f98] tertiary
- borders: rgba(255,255,255,0.08) standard, rgba(255,255,255,0.05) subtle
- accent: #5e6ad2 primary, #7170ff interactive
- status colors: new=gray, open=indigo, in_progress=amber, resolved=green
- Inter font, weights 400/510/590, no pure white
Fixed: Suspense boundaries for useSearchParams in layout and admin pages
Build: passes with zero errors
2026-06-07 22:16:18 +02:00
Gjermund Høsøien Wiggen
df677cb37f
Add web redesign spec: Linear-inspired UX, conversation-centric, two-panel layout
2026-06-07 22:07:03 +02:00
Gjermund Høsøien Wiggen
49834f5215
fix: API proxy — strip /api prefix in rewrite (backend routes don't use /api)
2026-06-07 22:05:30 +02:00
Gjermund Høsøien Wiggen
73cf283f06
Add admin page with 4 tabs for managing queues, lifecycles, scrips, and custom fields
2026-06-07 22:02:11 +02:00
Gjermund Høsøien Wiggen
1029176873
Add ticket detail page with transaction timeline and status change
2026-06-07 22:02:08 +02:00
Gjermund Høsøien Wiggen
a49e888011
Add ticket list page with filters, status badges, create dialog
2026-06-07 22:02:06 +02:00
Gjermund Høsøien Wiggen
f69678db4b
Add dark theme root layout with Inter font and nav bar
2026-06-07 22:02:03 +02:00
Gjermund Høsøien Wiggen
00dd21f4dd
Add typed fetch API client with 15 endpoint functions
2026-06-07 22:02:01 +02:00
Gjermund Høsøien Wiggen
59d66b3392
Add TypeScript interfaces for Tessera domain types
2026-06-07 22:01:58 +02:00
Gjermund Høsøien Wiggen
6b7d8c4aba
Fix next.config.ts API proxy, add web pages spec
2026-06-07 21:56:36 +02:00
Gjermund Høsøien Wiggen
9b1af0b7b3
Add Next.js + shadcn/ui scaffold with deps
...
- Next.js 15 App Router, TypeScript, Tailwind CSS
- shadcn/ui components: button, input, select, textarea, dialog, tabs, table, card, badge, label, separator, dropdown-menu, form, sheet, tooltip
- Runtime deps: @tanstack/react-table, zod, react-hook-form, @hookform/resolvers, lucide-react, date-fns
2026-06-07 21:55:54 +02:00
Gjermund Høsøien Wiggen
974df8a9f1
Add React/Next.js + shadcn/ui frontend spec
2026-06-07 21:53:16 +02:00
Gjermund Høsøien Wiggen
3a98027f5e
fix: scrip engine condition matching and ticket GET endpoint
...
- engine.ts: remove transaction_type-based scrip filtering. Now uses condition evaluator
exclusively (matching by scrip.condition_type against transaction types was incorrect —
'OnResolve' ≠ 'StatusChange'). All non-disabled, queue-matching scrips are evaluated.
- tickets.ts: fix GET /:id — replace broken Drizzle 'with' relation with manual CF join.
Set up Drizzle relations needed for proper schema typing (customFieldValues → customFields).
2026-06-07 21:48:04 +02:00
Gjermund Høsøien Wiggen
1f238330c7
feat: scrip engine implementation — real SMTP, webhooks, DB actions
...
- config.ts: add SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_FROM
- engine.ts: prepare() queries real scrips from DB, matches by queue_id + condition_type, loads lifecycle for OnResolve context, renders Handlebars templates, builds PreparedScrip. commit() dispatches to real action executors.
- actions.ts: SendEmail via nodemailer SMTP, Webhook via fetch POST, SetCustomField writes to custom_field_values table
- conditions.ts: OnResolve uses LifecycleValidator.isResolvedStatus()
- tickets.ts: updated to pass lifecycleDef context to scrip engine
- nodemailer installed
- Port changed to 9876 (8080 occupied by Apache)
Verification: bun run src/index.ts starts server, GET /health returns {"status":"ok","version":"0.1.0"}
2026-06-07 21:38:56 +02:00
Gjermund Høsøien Wiggen
1136227510
TypeScript/Bun project scaffold
...
- Stack: Bun, Hono, Drizzle ORM, Zod, Handlebars, Pino
- Models: ticket, queue, transaction, scrip, template, custom_field, user, lifecycle
- Scrip engine: prepare/commit two-phase dispatch, template rendering, mock actions
- Lifecycle validator: state machine transition validation with wildcard support
- Routes: health, tickets (full CRUD + preview + transactions), queues, scrips, custom-fields, lifecycles
- Middleware: Pino logging, error handler
- Database: Drizzle ORM schema + initial migration (10 tables)
- Type-check: passes (tsc --noEmit, zero errors)
2026-06-07 21:21:50 +02:00
Gjermund Høsøien Wiggen
7be1810162
Add TypeScript/Bun scaffold specification
2026-06-07 21:12:14 +02:00
Gjermund Høsøien Wiggen
3611fa97d7
Add architecture document and RT analysis reference
2026-06-07 21:09:26 +02:00
Gjermund Høsøien Wiggen
af359fca15
Initial commit: project scaffold
2026-06-07 21:07:25 +02:00