mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-08 05:19:48 -05:00
73dfeecbaaf792b493c071d86026fa50764fce61
18 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
5ace391bd9 |
feat(i18n): Add comprehensive translation support across all templates
- Replace hardcoded English strings with translation function calls in 36 template files - Update translation files for all supported languages (ar, de, es, fi, fr, he, it, nb, nl, no) - Add over 55,000 new translation entries across all language files - Update extract_translations.py to use 'python -m babel.messages.frontend' instead of pybabel - Improve internationalization coverage for UI elements including: * Skip to content links * Sidebar toggle buttons * Command palette placeholders * Admin dashboard elements * Form labels and buttons * Report templates * Payment and invoice views This commit significantly improves the application's multilingual support by making previously hardcoded strings translatable. |
||
|
|
39cf649f8e |
feat: Add client portal with password setup email functionality
Implement a complete client portal feature that allows clients to access their projects, invoices, and time entries through a dedicated portal with separate authentication. Includes password setup via email with secure token-based authentication. Client Portal Features: - Client-based authentication (separate from user accounts) - Portal access can be enabled/disabled per client - Clients can view their projects, invoices, and time entries - Clean, minimal UI without main app navigation elements - Login page styled to match main app design Password Setup Email: - Admin can send password setup emails to clients - Secure token-based password setup (24-hour expiration) - Email template with professional styling - Password setup page matching app login design - Token validation and automatic cleanup after use Email Configuration: - Email settings from admin menu are now used for sending - Database email settings persist between restarts and updates - Automatic reload of email configuration when sending emails - Database settings take precedence over environment variables - Improved error messages for email configuration issues Database Changes: - Add portal_enabled, portal_username, portal_password_hash to clients - Add password_setup_token and password_setup_token_expires to clients - Migration 047: Add client portal fields to users (legacy) - Migration 048: Add client portal credentials to clients - Migration 049: Add password setup token fields New Files: - app/routes/client_portal.py - Client portal routes and authentication - app/templates/client_portal/ - Portal templates (base, login, dashboard, etc.) - app/templates/email/client_portal_password_setup.html - Email template - migrations/versions/047-049 - Database migrations - tests/test_client_portal.py - Portal tests - docs/CLIENT_PORTAL.md - Portal documentation Modified Files: - app/models/client.py - Add portal fields and password token methods - app/routes/clients.py - Add send password email route - app/routes/client_portal.py - Portal routes with redirect handling - app/utils/email.py - Use database settings, add password setup email - app/templates/clients/edit.html - Add send email button - app/templates/components/ui.html - Support client portal breadcrumbs Security: - Secure token generation using secrets.token_urlsafe() - Password hashing with werkzeug.security - Token expiration (24 hours default) - Token cleared after successful password setup - CSRF protection on all forms |
||
|
|
1e7f1d211a |
Improve navigation and UX for production readiness
This commit implements several UX improvements based on user feedback to make the application more production-ready: Navigation improvements: - Add Email Configuration link to Admin side menu for easier access - Move Time Entry Templates from Work menu to Admin section - Fix menu dropdown state so Time Entry Templates opens Admin menu Clickable listings for better navigation: - Make project names clickable in project list view - Make client names clickable in project list view - Make task names clickable in task list view - Make project names clickable in task list view - Make client names clickable in client list view - Add mailto: links for client email addresses in list and detail views - Make project names clickable in client detail view Kanban board improvements: - Support more columns on wider screens (up to 6 columns on 2xl screens) - Change from fixed 4 columns to responsive: lg:4, xl:5, 2xl:6 Dark mode fixes: - Fix black calendar/time icons in dark mode by adding proper CSS rules - Add dark mode color classes to calendar icons - Ensure icons are visible and properly colored in dark theme These changes improve discoverability, reduce clicks, and enhance the overall user experience, especially for power users with wide screens. |
||
|
|
d3f6a792dd |
Add prepaid-form parsing, tame console noise, and fix invoice UI
parse prepaid hour/reset fields on client edit/create; guard invalid values with new route tests suppress benign ResizeObserver warnings globally and load handler on standalone pages raise invoice actions dropdown as a floating menu so it isn’t clipped or scroll-locking |
||
|
|
14ae197266 |
Improve timezone handling for system and personal preferences
- share a centralized timezone list across admin and user settings - allow admins to pick from the same list when setting the system default - let users clear their personal override to fall back to the global default - add regression tests covering the new helper and reset path |
||
|
|
dc010c8da1 |
feat: Add enhanced table features with sorting, pagination, and column visibility
Implement comprehensive table enhancements across all data tables in the application: - Add sortable columns with visual indicators (up/down arrows) - Implement client-side pagination with configurable page size (10/25/50/100) - Add column visibility toggles with dropdown menu - Enable sticky headers that stick to top on scroll - Save user preferences (page size, visible columns) in localStorage - Support numeric, date, and text sorting with proper formatting Features: - Visual sort indicators show active column and direction - Pagination controls with page size selector and navigation buttons - Column visibility button integrated into existing toolbars - Sticky headers with shadow effect when active - Responsive design with mobile-friendly pagination - Dark mode support throughout Technical implementation: - Created data-tables-enhanced.js module with DataTableEnhanced class - Created data-tables-enhanced.css for all styling - Auto-initializes tables with data-table-enhanced attribute or table-zebra class - Properly integrates with existing Finance category table toolbars - Handles checkbox columns and special table structures Updated templates: - tasks/list.html, projects/list.html, clients/list.html - invoices/list.html, expenses/list.html, payments/list.html - mileage/list.html, per_diem/list.html, main/search.html All tables now provide consistent, enhanced user experience with improved data navigation and viewing options. |
||
|
|
b4b8bafb9a |
feat: Add comprehensive form validation system with real-time feedback
Implement a reusable form validation system that provides immediate, contextual feedback to users with inline error messages and visual indicators. Features: - Real-time validation on input, blur, and submit events - Inline error and success messages displayed near form fields - Visual indicators for required vs optional fields (asterisks) - Subtle validation styling with softer colors and smaller icons - Phone number validation for tel/phone fields (7-15 digits, optional country code) - Email, URL, number, date, and pattern validation support - Debounced validation to reduce performance impact - Form-level error messages on submit - Automatic focus management for invalid fields Technical improvements: - Prevent duplicate initialization with form and field flags - Smart message container insertion that respects existing form structure - Better detection of existing required indicators to prevent duplicates - Hidden messages take zero space (height: 0) to prevent layout shifts - Graceful error handling with try-catch blocks Styling: - Subtle visual feedback with green-300/red-300 borders (softer than before) - Smaller validation icons (0.875rem) and reduced padding (2rem) - Reduced opacity for messages (0.75-0.85) for less intrusive appearance - Lighter focus shadows (0.08 opacity) for subtle feedback - Dark mode support with appropriate color adjustments Applied to all forms: - Projects (create/edit) - Clients (create/edit) - Tasks (create/edit) - Invoices (create/edit) - Payments (create/edit) - Expenses, Mileage, Per Diem forms - Time Entry (manual entry) - Weekly Goals Fixes: - Prevent duplicate message containers and layout breaks - Better insertion logic that respects existing help text - Improved container detection to avoid duplicates - Fixed required indicator duplication issues - Enhanced form submission handler management The validation system automatically initializes on forms with data-validate-form attribute or novalidate attribute, providing consistent validation UX across the application. |
||
|
|
e1d6fbafa0 |
feat: standardize table templates and implement bulk actions with enhanced UX
Standardize all table templates across the application and implement comprehensive bulk operations with improved loading states and empty state handling. Frontend Improvements: - Standardize table templates: Apply consistent styling, filters, and bulk actions across all list pages - Add bulk action UI: Implement bulk selectors, action dropdowns, and confirmation dialogs - Implement loading states: Add skeleton loaders, progress indicators for exports and bulk operations - Enhance empty states: Create context-aware empty states with clear CTAs - Improve filter UX: Make filter sections collapsible with localStorage persistence Backend Implementation: - Add bulk delete routes: Implement bulk deletion endpoints for invoices, expenses, payments, per diem, and mileage - Add bulk status update routes: Implement bulk status update endpoints for all applicable resources - Ensure proper permission checks and comprehensive error handling UI Components: - Enhance empty_state macro with context-awareness - Add skeleton_table, skeleton_card, and progress_indicator components - Extend enhanced-ui.css with progress-indeterminate animation and fade-in-up transitions Files Changed: 15 files modified with 1,274 additions |
||
|
|
b937f4e2d9 |
feat: Add bulk selection and actions to expenses, payments, per diem, and mileage tables
Standardize table templates across all list pages by adding bulk selection and bulk actions functionality, following the same pattern as the tasks table. Changes: - Add bulk actions dropdown button (admin only) with "Change Status" and "Delete" options - Add checkbox column in table headers with select-all functionality - Add individual checkboxes for each row - Implement JavaScript functions for bulk operations: * toggleAll[Entity]() - Select/deselect all checkboxes * updateBulkDeleteButton() - Update button state based on selection count * Menu management (openMenu, closeAllMenus) * Bulk delete confirmation dialog * Bulk status change dialog - Add hidden forms for bulk delete and bulk status change operations - Add confirmation dialogs for bulk operations with proper styling - Maintain consistent UI/UX across all entity list pages Note: Backend routes for bulk operations need to be implemented (forms currently use placeholder action="#"). The frontend is ready for backend integration. Affected files: - app/templates/expenses/list.html - app/templates/payments/list.html - app/templates/per_diem/list.html - app/templates/mileage/list.html |
||
|
|
12d3b9fb1b |
feat: Add comprehensive Import/Export system and standardize UI headers
## New Features
### Import/Export System
- Add DataImport and DataExport models for tracking operations
- Implement CSV import for bulk time entry data
- Add support for importing from Toggl and Harvest (placeholder)
- Implement GDPR-compliant full data export (JSON format)
- Add filtered export functionality with date/project filters
- Create backup/restore functionality for database migrations
- Build migration wizard UI for seamless data transitions
- Add comprehensive test coverage (unit and integration tests)
- Create user documentation (IMPORT_EXPORT_GUIDE.md)
### Database Changes
- Add migration 040: Create data_imports and data_exports tables
- Track import/export operations with status, logs, and file paths
- Support automatic file expiration for temporary downloads
## UI/UX Improvements
### Navigation Menu Restructure
- Rename "Work" to "Time Tracking" for clarity
- Rename "Finance" to "Finance & Expenses"
- Add "Tools & Data" submenu with Import/Export and Saved Filters
- Reorganize Time Tracking submenu: prioritize Log Time, add icons to all items
- Expand Finance submenu: add Mileage, Per Diem, and Budget Alerts
- Add icons to all Admin submenu items for better visual scanning
- Fix Weekly Goals not keeping Time Tracking menu open
### Standardized Page Headers
Apply consistent page_header macro across 26+ pages:
- **Time Tracking**: Tasks, Projects, Clients, Kanban, Weekly Goals, Templates, Manual Entry
- **Finance**: Invoices, Payments, Expenses, Mileage, Per Diem, Budget Alerts, Reports
- **Admin**: Dashboard, Users, Roles, Permissions, Settings, API Tokens, Backups, System Info, OIDC
- **Tools**: Import/Export, Saved Filters, Calendar
- **Analytics**: Dashboard
Each page now includes:
- Descriptive icon (Font Awesome)
- Clear title and subtitle
- Breadcrumb navigation
- Consistent action button placement
- Responsive design with dark mode support
## Bug Fixes
### Routing Errors
- Fix endpoint name: `per_diem.list_per_diems` → `per_diem.list_per_diem`
- Fix endpoint name: `reports.index` → `reports.reports`
- Fix endpoint name: `timer.timer` → `timer.manual_entry`
- Add missing route registration for import_export blueprint
### User Experience
- Remove duplicate "Test Configuration" button from OIDC debug page
- Clean up user dropdown menu (remove redundant Import/Export link)
- Improve menu item naming ("Profile" → "My Profile", "Settings" → "My Settings")
## Technical Details
### New Files
- `app/models/import_export.py` - Import/Export models
- `app/utils/data_import.py` - Import business logic
- `app/utils/data_export.py` - Export business logic
- `app/routes/import_export.py` - API endpoints
- `app/templates/import_export/index.html` - User interface
- `tests/test_import_export.py` - Integration tests
- `tests/models/test_import_export_models.py` - Model tests
- `docs/IMPORT_EXPORT_GUIDE.md` - User documentation
- `docs/import_export/README.md` - Quick reference
- `migrations/versions/040_add_import_export_tables.py` - Database migration
### Modified Files
- `app/__init__.py` - Register import_export blueprint
- `app/models/__init__.py` - Export new models
- `app/templates/base.html` - Restructure navigation menu
- 26+ template files - Standardize headers with page_header macro
## Breaking Changes
None. All changes are backward compatible.
## Testing
- All existing tests pass
- New test coverage for import/export functionality
- Manual testing of navigation menu changes
- Verified consistent UI across all updated pages
|
||
|
|
54ec5fe4b2 |
feat: Add bulk task operations and CSV export across all entities
Implements comprehensive bulk operations and export functionality for tasks, clients, and projects with consistent UI/UX across all three entities. Features Added: - Bulk task operations (delete, status change, assignment, move to project) - Multi-select checkboxes with "select all" functionality - CSV export for tasks, clients, and projects - Export respects current filters and permissions - Modal dialogs for bulk operation confirmation Bug Fixes: - Fixed bulk delete not working due to dialog submission issue - Fixed dropdown menus being cut off in short tables (z-index and overflow) - Fixed projects export attempting to access .name on string property Technical Details: - Backend: Added 5 new routes (tasks bulk ops, 3 export routes) - Frontend: Updated task/client/project list templates with consistent UI - Tests: Added 23 comprehensive tests for bulk operations - Changed table overflow from overflow-x-auto to overflow-visible - Added z-50 to all dropdown menus for proper layering Routes Added: - POST /tasks/bulk-delete - POST /tasks/bulk-status - POST /tasks/bulk-assign - POST /tasks/bulk-move-project - GET /tasks/export - GET /clients/export - GET /projects/export Files Changed: - app/routes/tasks.py (+103 lines) - app/routes/clients.py (+73 lines) - app/routes/projects.py (+95 lines) - app/templates/tasks/list.html (major refactor) - app/templates/clients/list.html (+export, overflow fix) - app/templates/projects/list.html (+export fix, overflow fix) - tests/test_bulk_task_operations.py (NEW, 23 tests) - docs/BULK_TASK_OPERATIONS.md (NEW) - BULK_TASK_OPERATIONS_IMPLEMENTATION.md (NEW) - BUGFIXES_BULK_OPERATIONS.md (NEW) - BUGFIXES_CONSISTENCY_AND_EXPORT.md (NEW) Breaking Changes: None Migration Required: None |
||
|
|
20b7401891 |
feat: Add invoice expenses, enhanced PDF editor with Konva.js, and uploads persistence
Major Features: - Invoice Expenses: Allow linking billable expenses to invoices with automatic total calculations - Add expenses to invoices via "Generate from Time/Costs" workflow - Display expenses in invoice view, edit forms, and PDF exports - Track expense states (approved, invoiced, reimbursed) with automatic unlinking on invoice deletion - Update PDF generator and CSV exports to include expense line items - Enhanced PDF Invoice Editor: Complete redesign using Konva.js for visual drag-and-drop layout design - Add 40+ draggable elements (company info, invoice data, shapes, text, advanced elements) - Implement comprehensive properties panel for precise element customization (position, fonts, colors, opacity) - Add canvas toolbar with alignment tools, zoom controls, and layer management - Support keyboard shortcuts (copy/paste, duplicate, arrow key positioning) - Save designs as JSON for editing and generate clean HTML/CSS for rendering - Add real-time preview with live data - Uploads Persistence: Implement Docker volume persistence for user-uploaded files - Add app_uploads volume to all Docker Compose configurations - Ensure company logos and avatars persist across container rebuilds and restarts - Create migration script for existing installations - Update directory structure with proper permissions (755 for dirs, 644 for files) Database & Backend: - Add invoice_pdf_design_json column to settings table via Alembic migration - Extend Invoice model with expenses relationship - Update admin routes for PDF layout designer endpoints - Enhance invoice routes to handle expense linking/unlinking Frontend & UI: - Redesign PDF layout editor template with Konva.js canvas (2484 lines, major overhaul) - Update invoice edit/view templates to display and manage expenses - Add expense sections to invoice forms with unlink functionality - Enhance UI components with keyboard shortcuts support - Update multiple templates for consistency and accessibility Testing & Documentation: - Add comprehensive test suites for invoice expenses, PDF layouts, and uploads persistence - Create detailed documentation for all new features (5 new docs) - Include migration guides and troubleshooting sections Infrastructure: - Update docker-compose files (main, example, remote, remote-dev, local-test) with uploads volume - Configure pytest for new test modules - Add template filters for currency formatting and expense display This update significantly enhances TimeTracker's invoice management capabilities, improves the PDF customization experience, and ensures uploaded files persist reliably across deployments. |
||
|
|
944b69a7fc |
feat: implement full permission enforcement and enhanced UI visibility
BREAKING CHANGE: Permission system now actively enforced across all routes ## Summary Complete implementation of advanced role-based access control (RBAC) system with full route protection, UI conditionals, and enhanced management interface. ## Route Protection - Updated all admin routes to use @admin_or_permission_required decorator - Replaced inline admin checks with granular permission checks in: * Admin routes: user management, settings, backups, telemetry, OIDC * Project routes: create, edit, delete, archive, bulk operations * Client routes: create, edit, delete, archive, bulk operations - Maintained backward compatibility with existing @admin_required decorator ## UI Permission Integration - Added template helpers (has_permission, has_any_permission) to all templates - Navigation conditionally shows admin/OIDC links based on permissions - Action buttons (Edit, Delete, Archive) conditional on user permissions - Project and client pages respect permission requirements - Create buttons visible only with appropriate permissions ## Enhanced Roles & Permissions UI - Added statistics dashboard showing: * Total roles, system roles, custom roles, assigned users - Implemented expandable permission details in roles list * Click to view all permissions grouped by category * Visual checkmarks for assigned permissions - Enhanced user list with role visibility: * Shows all assigned roles as color-coded badges * Blue badges for system roles, gray for custom roles * Yellow badges for legacy roles with migration prompt * Merged legacy role column into unified "Roles & Permissions" - User count per role now clickable and accurate ## Security Improvements - Added CSRF tokens to all new permission system forms: * Role creation/edit form * Role deletion form * User role assignment form - All POST requests now protected against CSRF attacks ## Technical Details - Fixed SQLAlchemy relationship query issues (AppenderQuery) - Proper use of .count() for relationship aggregation - Jinja2 namespace for accumulating counts in templates - Responsive grid layouts for statistics and permission cards ## Documentation - Created comprehensive implementation guides - Added permission enforcement documentation - Documented UI enhancements and features - Included CSRF protection review ## Impact - Permissions are now actively enforced, not just defined - Admins can easily see who has what access - Clear visual indicators of permission assignments - Secure forms with CSRF protection - Production-ready permission system |
||
|
|
935f30e4d6 |
feat: Add Client Notes feature for internal client tracking
Implement comprehensive client notes system allowing users to add internal notes about clients that are never visible to clients themselves. Notes support importance flagging, full CRUD operations, and proper access controls. Key Changes: - Add ClientNote model with user/client relationships - Create Alembic migration (025) for client_notes table - Implement full REST API with 9 endpoints - Add client_notes blueprint with CRUD routes - Create UI templates (edit page + notes section on client view) - Add importance toggle with AJAX functionality - Implement permission system (users edit own, admins edit all) Features: - Internal-only notes with rich text support - Mark notes as important for quick identification - Author tracking with timestamps - Cascade delete when client is removed - Mobile-responsive design - i18n support for all user-facing text Testing: - 24 comprehensive model tests - 23 route/integration tests - Full coverage of CRUD operations and permissions Documentation: - Complete feature guide in docs/CLIENT_NOTES_FEATURE.md - API documentation with examples - Troubleshooting section - Updated main docs index Database: - Migration revision 025 (depends on 024) - Fixed PostgreSQL boolean default value issue - 4 indexes for query performance - CASCADE delete constraint on client_id This feature addresses the need for teams to track important information about clients internally without exposing sensitive notes to client-facing interfaces or documents. |
||
|
|
18d9808d5e |
feat: add user favorite projects functionality with CSV export enhancements
Features: Add favorite projects feature allowing users to star/bookmark frequently used projects New UserFavoriteProject association model with user-project relationships Star icons in project list for one-click favorite toggling via AJAX Filter to display only favorite projects Per-user favorites with proper isolation and cascade delete behavior Activity logging for favorite/unfavorite actions Database: Add user_favorite_projects table with migration (023_add_user_favorite_projects.py) Foreign keys to users and projects with CASCADE delete Unique constraint preventing duplicate favorites Indexes on user_id and project_id for query optimization Models: User model: Add favorite_projects relationship with helper methods add_favorite_project() - add project to favorites remove_favorite_project() - remove from favorites is_project_favorite() - check favorite status get_favorite_projects() - retrieve favorites with status filter Project model: Add is_favorited_by() method and include favorite status in to_dict() Export UserFavoriteProject model in app/models/__init__.py Routes: Add /projects/<id>/favorite POST endpoint to favorite a project Add /projects/<id>/unfavorite POST endpoint to unfavorite a project Update /projects GET route to support favorites=true query parameter Fix status filtering to work correctly with favorites JOIN query Add /reports/export/form GET endpoint for enhanced CSV export form Templates: Update projects/list.html: Add favorites filter dropdown to filter form (5-column grid) Add star icon column with Font Awesome icons (filled/unfilled) Add JavaScript toggleFavorite() function for AJAX favorite toggling Improve hover states and transitions for better UX Pass favorite_project_ids and favorites_only to template Update reports/index.html: Update CSV export link to point to new export form Add icon and improve hover styling Reports: Enhance CSV export functionality with dedicated form page Add filter options for users, projects, clients, and date ranges Set default date range to last 30 days Import Client model and or_ operator for advanced filtering Testing: Comprehensive test suite in tests/test_favorite_projects.py (550+ lines) Model tests for UserFavoriteProject creation and validation User/Project method tests for favorite operations Route tests for favorite/unfavorite endpoints Filtering tests for favorites-only view Relationship tests for cascade delete behavior Smoke tests for complete workflows Coverage for edge cases and error handling Documentation: Add comprehensive feature documentation in docs/FAVORITE_PROJECTS_FEATURE.md User guide with step-by-step instructions Technical implementation details API documentation for new endpoints Migration guide and troubleshooting Performance and security considerations Template Cleanup: Remove duplicate templates from root templates/ directory Admin templates (dashboard, users, settings, OIDC debug, etc.) Client CRUD templates Error page templates Invoice templates Project templates Report templates Timer templates All templates now properly located in app/templates/ Breaking Changes: None - fully backward compatible Migration Required: Run alembic upgrade head to create user_favorite_projects table |
||
|
|
0c316ac5e1 |
feat: Implement bulk operations and status management improvements
Major improvements: - Add bulk operations functionality across clients, projects, and tasks - Implement deletion and status management enhancements - Add project code field with database migration (022) - Improve inactive status handling for projects Backend changes: - Update project model with new code field and status logic - Enhance routes for clients, projects, and tasks with bulk actions - Add migration for project_code field (022_add_project_code_field.py) Frontend updates: - Refactor bulk actions widget component - Update clients list and detail views with bulk operations - Enhance project list, view, and kanban templates - Improve task list, edit, view, and kanban displays - Update base template with UI improvements - Refine saved filters and time entry templates lists Testing: - Add test_project_inactive_status.py for status handling - Update test_tasks_templates.py with new functionality Documentation: - Add BULK_OPERATIONS_IMPROVEMENTS.md - Add DELETION_AND_STATUS_IMPROVEMENTS.md - Add docs/QUICK_WINS_IMPLEMENTATION.md - Update ALL_BUGFIXES_SUMMARY.md and IMPLEMENTATION_COMPLETE.md |
||
|
|
79e826ced2 |
feat(tasks,ui): enhance task management UI; update routes; add tests
Improve task workflows and overall UX, and align backend routes with the new UI flows. Update docs and development setup accordingly. - UI: refine task list/view/edit templates, project views, and Kanban partial (`_kanban_tailwind.html`) - CSS: polish `app/static/enhanced-ui.css` for spacing, layout, and responsiveness - Routes: update `app/routes/tasks.py` and `app/routes/clients.py` to support new edit/delete/filter behaviors and validations - Templates: align clients/projects pages for consistency and navigation - Docs: refresh `docs/GETTING_STARTED.md` and `docs/TASK_MANAGEMENT_README.md` - Dev: adjust `docker-compose.yml` and `setup.py` to match the latest runtime/build expectations - Tests: add coverage for delete actions, task project editing, and task filters UI (`tests/test_delete_actions.py`, `tests/test_task_edit_project.py`, `tests/test_tasks_filters_ui.py`); update existing tests Why: - Streamlines common task operations and improves discoverability - Ensures backend and UI are consistent and well-tested |
||
|
|
3c3faf13d4 |
feat: Implement Tailwind CSS UI redesign across application
Migrate frontend from custom CSS to Tailwind CSS framework with comprehensive template updates and improved component structure. Breaking Changes: - Remove legacy CSS files (base.css, calendar.css, ui.css, etc.) - Replace with Tailwind-based styling system New Features: - Add Tailwind CSS configuration with PostCSS pipeline - Create new template components for admin, clients, invoices, projects, reports - Add form-bridge.css for smooth transition between legacy and Tailwind styles - Add default avatar SVG asset - Implement Tailwind-based kanban board template - Add comprehensive UI quick wins documentation Infrastructure: - Add package.json with Tailwind dependencies - Configure PostCSS and Tailwind build pipeline - Update .gitignore for Node modules and build artifacts Testing: - Add template rendering tests (test_tasks_templates.py) - Add UI component tests (test_ui_quick_wins.py) Templates Added: - Admin: dashboard, settings, system info, user management - Clients: list and detail views - Invoices: full CRUD templates with payment recording - Projects: list, detail, and Tailwind kanban views - Reports: comprehensive reporting templates - Timer: manual entry interface This commit represents the first phase of the UI redesign initiative, maintaining backward compatibility where needed while establishing the foundation for modern, responsive interfaces. |