The duplicate functions at lines 455-486 were redefining cacheElements and
bindEvents with wrong element IDs (kebab-case vs camelCase in HTML).
This caused 'Cannot read properties of null' error on slides app init.
- Add docs.css to main index.html CSS includes
- Remove redundant link tag from docs.html
- Add body data-app attribute in htmx-app.js when section changes
- Use body[data-app='docs'] selector for reliable CSS targeting
- Force light background on #main-content when docs is active
- Create api-client.js for automatic auth token handling
- Include Authorization header in all API requests
- Support for localStorage/sessionStorage token persistence
- Handle 401/403 errors with global event dispatch
- Add file upload with progress tracking
- Update drive.js to use ApiClient
- Add api-client.js to index.html
- Add CRM tab to header navigation after tasks
- Add CSS breakpoint at 1350px for CRM tab hiding
- Add app-item breakpoint for CRM in dropdown
- Delete i18n.js (translations moved to botlib .ftl files)
- Update TODO.md with completed phases
- CRM: Pipeline view with Lead → Opportunity → Account flow (Dynamics nomenclature)
- Kanban pipeline with stages: Lead, Qualified, Proposal, Negotiation, Won, Lost
- List views for Leads, Opportunities, Accounts, Contacts
- Summary stats: Pipeline value, Conversion rate, Avg deal, Won this month
- Billing: Invoices, Payments, Quotes management
- Summary cards: Pending, Overdue, Paid this month, Revenue
- Invoice list with status filters (draft, sent, paid, overdue, cancelled)
- Payments tracking with method filters
- Quotes with status workflow (draft → sent → accepted/rejected)
- Products: Product & Service catalog
- Grid and List views with category/status filters
- Services tab with type filters (hourly, fixed, recurring)
- Price Lists management with currency support
- Tickets: AI-assisted support cases
- Case management with priority/category filters
- AI suggestion banner and auto-suggestions on description
- List + Detail split view
- Summary stats: Open, Urgent, Resolved today, AI resolved %
- Forms: Redirect to Tasks with AI prompt
- Quick example chips for common form types
- Redirects to Tasks with 'Create a form for me about [topic]'
- Menu: Added all 5 apps to dropdown menu after People
- i18n: Added nav labels in English and Portuguese
- Complete home page redesign with large icons, full descriptions, recent documents
- Add People (Contacts) menu item and page with contacts management
- Move Paper right after Chat in menu order
- Rename Tools to Compliance with shield icon
- Settings moved to end of menu
- Logo click now shows home page
- Add Project, Canvas, Goals, Player, Workspace, Video, Learn to menu
- New CSS for home page with modern card layout
- Use GBAuth service events for user profile updates
- Use correct storage keys (gb-access-token, gb-user-data)
- Listen to userUpdated, login, logout events
- Store tokens using AuthService.storeTokens() method
- Add fallback for when GBAuth is not immediately available
- Add JavaScript to load user profile from /api/auth/me endpoint
- Save access_token to localStorage/sessionStorage on login
- Update user menu to show actual user name and email
- Toggle Sign in/Sign out based on authentication state
- Add IDs to user menu elements for dynamic updates
- Changed apps-dropdown right position from 60px to 0 in app.css
- Wrapped apps button and dropdown in a container with position:relative
- Moved dropdown to be a sibling of the button inside the container
- Removed duplicate dropdown from header-right section
- Normalize task ID comparison in retry logic for consistent lookups
- Use normalized keys in pendingManifestUpdates Map
- Skip manifest_update in ProgressPanel (already handled by tasks.js)
- Clean up existing handler before registering new one in ProgressPanel.init
- Add name-based fallback lookups for sections/children/items when IDs change
- Detect structure changes (section count, children, items, names) and rebuild tree
- Clear progress-empty placeholder before rendering tree
- Add detailed BUILD_TREE logging for debugging
- Add cache-busting version to tasks.js script tag
Frontend JS:
- Replace text checkboxes with dot indicators
- Add 'View Details' links to tree sections
- Add HTMX afterSwap listener for pending manifest updates
- Retry system for manifest updates when elements not yet loaded
Frontend CSS:
- taskmd.css uses CSS variables for theme compatibility
- Dot indicators with pulse animation for running items
- Progress bar under running sections
- Pixel-perfect tree structure matching design mockup
Theme:
- Add complete TASKMD Progress Tree styles to theme-sentient.css
- Dot pulse animation with accent glow
- All components use theme variables