Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NUZext Beta

NUZext Logo

NUZext is a Google Chrome browser extension (Manifest V3) designed as a persistent side panel that gathers news based on your location and keywords, as well as your Google Calendar upcoming events and Gmail new unread mails, and that delivers them as a podcast-like audio briefing. It is designed to replace the former Android app Huxe.

Warning: This is a beta version. It may be unstable and may not work as expected.


🚀 Philosophy & Objectives

  • Absolute Local-First: Your personal data never leaves your machine. No paid cloud services (OpenAI, Anthropic, Google AI Studio) are queried in production.
  • Local AI Synthesis: Local semantic inference powered by the Gemini Nano model embedded in Google Chrome for private and offline AI capabilities.
  • Audio Restitution (Audio-First): Text-to-speech read aloud via the local Web Speech API, with zero network latency. The interface provides physical speed control (e.g., 1.2x).
  • Accessibility (WCAG): Fully compliant with accessibility standards. The spoken text is displayed in parallel and in sync.
  • Internationalization: i18n ready. The Google generative AI and the Web Speech API embedded in Chrome are multilingual.

🛠️ Tech Stack & Development Environment

  • Architecture & AI Pair-Coding: Built upon a complete human-designed architectural plan and brought to life in Google Antigravity IDE through agentic workflows and AI pair-coding.
  • AI Core: Chrome Built-in AI running Gemini Nano locally via native JavaScript APIs (ai.languageModel / Prompt API, ai.summarizer).
  • Audio Engine: Browser-native Web Speech API (window.speechSynthesis) for real-time, zero-latency text-to-speech.
  • Runtime & Extension Platform: Pure Vanilla JS (ES6+), HTML5 & CSS3 inside a Manifest V3 side_panel architecture (no heavy frameworks or external dependencies).
  • Automation & Storage: chrome.alarms for background synchronization and chrome.storage.local for offline state persistence.

🏗️ Data Management Architecture (Double Temporality)

To optimize hardware resources (RAM/CPU) and ensure relevance, data collection is strictly separated based on volatility:

A. Low Volatility (News / Monitoring) — Once a day

  • Mechanism: Scheduled via alarms (chrome.alarms) executed in the background by the Service Worker (background.js).
  • Flow: Queries (fetch) Google News RSS feeds generated by user keywords (e.g., https://news.google.com/rss/search?q=Rust...) $\rightarrow$ Vanilla JS filtering $\rightarrow$ Local AI pre-summarization $\rightarrow$ Persistent local storage in chrome.storage.local under the cachedNews key.
  • Hourly Profiles (4 choice profiles):
    • 00:00 — Rungis / Early Bird Profile
    • 06:00 — Standard / Office Profile
    • 12:00 — Late-riser / Midday Profile
    • 18:00 — Night / Evening Shift Profile

B. High Volatility (Personal & Contextual Data) — Just-In-Time

  • Mechanism: Triggered on-demand (in real-time) the exact moment the user opens the Side Panel or clicks the "Listen" button.
  • Flow: Simultaneous querying (Promise.all) of remote and local APIs:
    • Gmail API: Retrieves senders and subjects of recent important unread messages.
    • Google Calendar API: Lists events and appointments for the current day.
    • Open-Meteo API: Local geolocation and live weather (without API key).

🎨 Design & User Interface (UX)

The entire application runs inside the persistent sidepanel.html space and consists of two overlapping views:

  1. Main View (The Radio Host):
    • Header: Live weather widget + Settings button (⚙️).
    • Body: Text display of the script generated by Gemini Nano, split into clear paragraphs (with a visual highlight effect on the paragraph currently being read).
    • Footer: Physical audio controls (Play, Pause, playback speed selector).
  2. Overlay View (The Configuration):
    • A panel hidden by default (.overlay.hidden) that slides vertically over the main view when clicking the gear icon (⚙️).
    • Editable Fields: News schedule selector (0h, 6h, 12h, 18h), usual connection time, comma-separated keywords/topics, and specific RSS feeds.
    • Action: Saving writes to chrome.storage.local, recalculates the alarm cycle, closes the overlay, and forces an immediate data refresh.

📋 Prerequisites

  • Enable On-device AI ("IA sur l'appareil") in Google Chrome settings (under the System section).

📦 Testing the Beta / Installation

GitHub (only for advanced users, coders and other hackers)

  1. Download or Clone: Download the extension files or clone this repository to your local machine.
  2. Open Chrome Extensions: Open Google Chrome, type chrome://extensions in the address bar, and press Enter, or via the menu.
  3. Enable Developer Mode: Ensure that Developer mode (the toggle switch in the top right corner) is enabled.
  4. Load Unpacked: Click on the Load unpacked button.
  5. Select Extension Directory: Navigate to the src/ directory of the repository (where manifest.json is located) and select it.
  6. Use NUZext: Click the extension icon in the Chrome toolbar, then the NUZext logo to open the Chrome Side Panel. You can pin it to the toolbar. Enroll and enjoy ;).

Note

Google OAuth Beta Testing (Gmail & Calendar): During the developer beta phase, Google OAuth is set to "Testing" status in Google Cloud. If you want to test real-time integration with your own Gmail and Google Calendar accounts, please open a GitHub Issue to request adding your Google email address to the OAuth Test Users whitelist. Otherwise, NUZext will seamlessly run in local simulation mode.


🔒 Permissions & Privacy

Permissions to access remote and local APIs (Gmail, Calendar, Location) must be explicitly requested and explained by the extension. Upon installation, the extension prompts for these permissions, explains their purpose, and proposes initial news topics based on the user's location or language.


📝 License

This project is licensed under the GNU GPL v3. See the LICENSE file for more details.

About

A Chrome extension that uses Chrome's local generative AI to provide news, mail and calendar audio summary.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages