Commit graph

29 commits

Author SHA1 Message Date
3200c42b29 Fix 'make dev' to run both servers in parallel 2026-03-29 23:09:02 +02:00
caa0d580a0 Replace inline SVGs with svelte-heros named imports
- Replace all inline SVG icons with named imports from svelte-heros
- Use direct file imports (e.g. import Plus from 'svelte-heros/Plus.svelte')
  for optimal tree-shaking and faster compilation
- Icons replaced: Home, GlobeAlt, Users, Mail, Refresh, DocumentText,
  MenuAlt4, ArrowLeft, Plus, Eye, EyeOff, CheckCircle
2026-03-29 15:22:27 +02:00
46d9ff26dd Add svelte-heros icon library
- Install svelte-heros for consistent Heroicons usage
- Replace inline SVGs for password toggle with Eye/EyeOff icons
- Fix USE_EMBEDDED mode to serve frontend from filesystem
2026-03-29 15:16:58 +02:00
8b2d2649ac Add random password generation for new users
- Move GenerateRandomPassword to auth package for reuse
- Make password optional in user creation (generates 16-char if empty)
- Return generated password in response for user to copy
- Add Generate/Copy UI with show/hide toggle
2026-03-29 14:52:59 +02:00
061126c51e Fix remaining imc-vibe references in README and bun.lock 2026-03-24 23:44:56 +01:00
ff52be8adf Rename project from imc-vibe to imc
- Binary name: imc-vibe -> imc
- Go module: github.com/imc-vibe/backend -> github.com/imc/backend
- JWT issuer: imc-vibe -> imc
- UI labels: IMC Vibe -> IMC
- Update all imports and comments
2026-03-24 23:42:37 +01:00
25a3eae628 Show selected domain name centered in navbar 2026-03-23 22:38:31 +01:00
abd7e3a97f Remove password reset functionality
Backend:
- Remove ForgotPassword API handler
- Remove password reset token model and database table
- Remove email service for sending reset emails
- Remove SMTP configuration

Frontend:
- Remove /auth/forgot page
- Remove forgot password link from login page
- Remove forgot route from auth-only routes check
2026-03-23 22:35:30 +01:00
c459cc1efb Simplify change-password page: remove duplicate header, use main layout navbar, align buttons right 2026-03-23 22:29:18 +01:00
629c66cc34 Fix layout rendering for /auth/change-password page
The change-password page was showing both the main layout sidebar
and its own header. Now only auth-only routes (login, forgot)
skip the main layout.
2026-03-23 22:17:32 +01:00
516efcebd7 Add Vite proxy for API requests to backend during development
Proxy /api/* to http://localhost:8080 so dev frontend can call backend API.
2026-03-23 22:03:24 +01:00
b1f24c42ab Add app.css with Tailwind and daisyUI imports 2026-03-23 21:19:46 +01:00
f48a6fcd72 Update package dependencies for daisyUI migration 2026-03-23 21:12:07 +01:00
d76af4e427 Fix a11y warnings in layout dropdown
- Add svelte-ignore for daisyUI tabindex requirement
- Change logout <a> to <button> for proper semantics
2026-03-23 21:11:11 +01:00
0217f0b4c4 Complete daisyUI migration with CSS fixes
- Migrate all pages to daisyUI components
- Add data-theme="light" to app.html for proper theme
- Fix config to load .env from multiple locations
- Update avatar to use avatar-placeholder pattern
- Use @tailwindcss/vite plugin instead of PostCSS
2026-03-23 21:09:32 +01:00
70aa813c7f Remove unused CSS from domains page 2026-03-23 01:10:56 +01:00
ccaa1eca7e Decode JWT client-side instead of calling /api/auth/me
- Add lib/auth.ts with decodeJWT() and isTokenValid()
- Layout decodes JWT directly - no extra request
- Domains page also uses JWT for admin check
- Removed redundant user.domains from domains list page
2026-03-23 00:57:36 +01:00
19360e9a9f Show mailbox usage as percentage
- Add formatUsed() showing 'X GB (Y%)' format
- Fallback to 'Unknown' if quota data unavailable
2026-03-23 00:31:01 +01:00
9f77540c7b Show 0 bytes instead of 'Default' for used storage
- Separate formatBytes() for used storage
- formatQuota() keeps 'Default' only for unlimited quota
2026-03-23 00:28:59 +01:00
c5a9149220 Get real mailbox size from dovecot
- Add mail.GetQuota() using doveadm quota get
- Fix UserWithQuota response struct
- Fix frontend NaN display with Unknown fallback
- Update field names to camelCase (usedQuota)
2026-03-23 00:24:40 +01:00
c692fe436f Improve user/alias creation forms
- Prefill domain part in forms (e.g. input + @domain.com)
- Use native <dialog> element for modals
- Show error messages instead of alert()
- Cleaner input group styling
2026-03-23 00:00:42 +01:00
5c3e4ce7d8 Use native HTML <dialog> element for modals
Replaced CSS-based modal with native HTML <dialog> element.
Cleaner code, better accessibility, built-in backdrop handling.
2026-03-22 23:56:56 +01:00
a8aaa08d29 Show validation errors in domain creation form
Frontend now displays backend error messages when domain creation fails.
2026-03-22 23:54:34 +01:00
118b709275 Fix: domain delete uses name instead of id
Backend routes expect domain name (string), not id (number).
Frontend was passing domain.id but should pass domain.name.
2026-03-22 23:44:14 +01:00
d56722ddb9 Remove build artifacts from repository tracking 2026-03-22 01:19:55 +01:00
53ce3b06ae Add CLI flags for setup and server configuration
- Add --setup flag to create admin user
- Add --admin-user and --admin-password for setup
- Generate cryptographically random passwords for --setup
- Add --bind and --port flags for server binding
- Add BIND env var support
- Add SMTP email service for password reset
- Add password reset token storage
- Add auth header to queue/logs frontend pages
- Fix journalctl timestamp format
- Fix logs to return empty array instead of error when no entries
- Fix queue handler to return proper error message
- Hide Users/Aliases nav links when no domain selected
2026-03-22 01:17:43 +01:00
2c3a4c3daa Fix Svelte reactive state warnings and update gitignore 2026-03-22 00:04:41 +01:00
3cb21bf5cf remove build artifacts that should not be checked in 2026-03-21 23:57:01 +01:00
f4be03ceba first 2026-03-21 22:41:23 +01:00