← Back to home
Changelog
Release history for Asana Essentials
Features
- OpenAI-Compatible Local AI Provider: Full integration with local or self-hosted LLM servers (Ollama, LM Studio, vLLM, Jan, LocalAI). Supports customizable base URLs, optional bearer authentication, automatic
/v1/models endpoint discovery, and custom model selection.
- In-Browser WebGPU AI Engine (WebLLM): Upgraded client-side SLM engine leveraging WebGPU hardware acceleration for fast, private in-browser inference (Llama 3.2 3B, Qwen 2.5, SmolLM2) with zero API keys or external data transmission.
- Chrome Built-in AI (Gemini Nano): Instant local inference via Chrome's native Prompt API with zero download waiting time.
- Direct API Keys: Direct client-to-cloud connections to Google Gemini, OpenAI, and Anthropic Claude without intermediary servers or developer proxies.
- 4 Summary Personas: Tailor standup and task summaries with specialized prompt templates: Standard (balanced progress and blockers), Executive Brief (business impact and deliverables), Technical Deep-Dive (code changes and architecture), and Action Items First (prioritized tasks and next steps).
- Real-Time Generation Metrics: Live telemetry badges on generated summaries showing generation duration (seconds), estimated token count, and tokens-per-second throughput.
- Standup AI Speaker Summary: Synthesize all tasks and status updates for the active speaker into an instant briefing during standups, accessible via an interactive floating window.
- Extend Speaker Time Shortcut: Added
+ / = keyboard shortcuts to instantly add time to the active speaker's timer during a standup session.
- WebLLM Cache Manager: Dedicated panel in extension settings to pre-download model weights, monitor disk space, and clear cached weights.
- Rating & Feedback Invite: Non-intrusive review reminder for the Chrome Web Store after repeated successful standups.
Architecture & Styling
- Next.js-Inspired Codebase Organization: Restructured source code into clean domain directories (
src/app/, src/components/, src/features/, src/hooks/, src/lib/, src/styles/).
- Co-Located SCSS Styling: Migrated component styles into co-located
.scss files with design token CSS variables (--popup-..., --asana-...) and eliminated stray inline styles.
- Model-Specific Prompt Slicing: Dynamically prunes task descriptions and comment histories to optimize memory usage and speed for smaller local SLMs.
Testing & Security
- 95%+ Test Coverage: Comprehensive unit, functional, and integration test coverage across all storage, messaging, timer, queue, and AI abstraction layers.
- Non-Commercial License: Clear licensing safeguarding the codebase under custom Non-Commercial terms.
Features
- Settings panel — configure default timer, sound, confetti, shuffle, and task filter
- Speaker progress indicator (e.g. 2/5) during active standup
- Option to disable speaker shuffle (fixed order mode)
- 3-minute timer preset added to the duration picker
- Standup history limit increased from 20 to 30 records
- Dynamic version display in the About view
Improvements
- ErrorBoundary wrapping for graceful crash recovery
- MutationObserver scoped to toolbar parent instead of document.body
- Timer uses Date.now()-based elapsed calculation (drift-free)
- AudioContext resumes automatically if suspended
- Escape key closes timer picker without stopping standup
- Task filter poll interval reduced from 2s to 5s
- SummaryModal and Modal use CSS custom properties for theming
- All control buttons have aria-label attributes for accessibility
Docs & Testing
- New landing page, install guide, shortcuts reference, and changelog page
- Privacy policy expanded with data table and permissions
- README and CONTRIBUTING.md rewritten to match current project
- New tests for shuffle disable, progress indicator, Escape behavior
Features
- Standup timer with configurable duration (presets + clock picker)
- Auto-shuffled speaker queue with prev/next/skip navigation
- Task filtering — highlights current speaker's tasks on board and list views
- Timer persists per speaker — resumes from where they left off
- Overtime tracking — timer counts into negative after expiry
- Audio chime (double tone) on timer expiry
- Confetti celebration on standup completion
- Summary modal with per-speaker stats, total/avg time, longest speaker badge
- Keyboard shortcuts: Space (pause), →/← (next/prev), S (skip), Esc (stop)
- Settings panel — configure timer, sound, confetti, shuffle, task filter
- Standup history — stores last 30 sessions with per-speaker stats
- Speaker progress indicator (e.g. 2/5) during active standup
- Dark mode support via Asana's theme detection
Architecture
- Feature-based folder structure (shared/, features/, api/)
- Selector registry with fallback mechanism for Asana DOM changes
- Floating widget fallback when toolbar structure changes
- Shadow DOM isolation via Plasmo framework
- Shadow host re-attachment on Asana SPA re-renders
- ErrorBoundary wrapping for graceful failure recovery
- Date.now()-based timer for drift-free countdown
- Structured logging (verbose in dev, errors-only in production)
- Cross-browser builds: Chrome, Firefox, Edge, Safari
Testing
- 298 tests across 28 suites (unit, functional, integration, smoke)
- 95%+ coverage on statements, branches, functions, and lines
- Comprehensive mocks for Chrome APIs, Plasmo storage, and messaging