From bbad9ae4b35d3d93299c0c7774e24e42f94c9f1f Mon Sep 17 00:00:00 2001 From: Leonardo Fischer Date: Sun, 7 Jun 2026 21:37:14 -0300 Subject: [PATCH] Adicionar documentacao e screenshot --- README.md | 146 +++++++++++++++++++++++++++++++++++++++++++++++++ screenshot.png | Bin 0 -> 39752 bytes 2 files changed, 146 insertions(+) create mode 100644 README.md create mode 100644 screenshot.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..eec20d6 --- /dev/null +++ b/README.md @@ -0,0 +1,146 @@ +# URL Launcher + +A Chrome extension for opening a list of URLs as tabs — ideal for workflows that involve opening the same set of pages repeatedly (dashboards, research sessions, daily reading lists, etc.). + +Paste a raw list of URLs, or dump any arbitrary text and let the extension extract the links automatically. Tabs can be opened immediately or loaded lazily — only when you actually focus them — with optional staggered timers so your browser isn't hammered all at once. + + +### Why this exists + +Chrome Web Store extensions are a well-documented supply chain attack vector. Extensions can be silently updated after installation, sold to new owners, or compromised to inject malicious code into your browser — with full access to cookies, form data, and page content. Several popular tab-management extensions have been hijacked this way. + +This extension was built as a self-hostable, auditable alternative to a Chrome Store extension I relied on. The entire codebase is four short files you can read in a few minutes. Because you load it as an unpacked extension, it never updates without you explicitly pulling changes — and you can review every diff before you do. + +--- + +## Features + +- **Bulk open URLs** — paste one URL per line and open them all as background tabs in one click +- **Extract URLs from text** — paste any text (emails, docs, HTML, markdown, Slack messages) and extract every link automatically, deduplicated and cleaned of trailing punctuation +- **Wait for focus** — tabs open as lightweight placeholder pages and only navigate to their target URL when you switch to them, keeping memory and network usage low +- **Delayed load** — each tab gets a staggered auto-load countdown (1s, 2s, 3s…) so URLs load progressively even without you focusing them, preventing browser overload +- Live URL counter with instant validation +- "Load now" escape hatch on every placeholder page + +--- + +## Screenshots + +![URL Launcher](screenshot.png) + +--- + +## Installation + +This extension is not on the Chrome Web Store. Install it in developer mode: + +1. Download or clone this repository +2. Open Chrome and navigate to `chrome://extensions` +3. Enable **Developer mode** (toggle in the top-right corner) +4. Click **Load unpacked** +5. Select the repository folder (the one containing `manifest.json`) +6. The **URL Launcher** icon will appear in your Chrome toolbar + +To update after pulling new changes, go back to `chrome://extensions` and click the **↺ refresh** icon on the extension card. + +--- + +## Usage + +### Basic — open a list of URLs + +1. Click the extension icon in the toolbar +2. Paste one URL per line into the text box +3. Click **Open URLs** + +All URLs open as background tabs. Invalid lines are silently skipped. + +### Extract URLs from arbitrary text + +1. Paste any text into the box — an email thread, a webpage, a markdown document, anything +2. Click **Extract URLs** +3. The text box is replaced with one clean URL per line, duplicates removed +4. Click **Open URLs** + +### Wait for focus to load + +When the **Wait for focus to load** checkbox is enabled (default), each tab opens as a minimal placeholder page instead of loading the real URL immediately. The target URL only loads when you click on that tab. + +This is useful when opening many tabs at once — the browser stays responsive and pages don't all race to load in parallel. + +### Delayed load + +When **Delayed load** is also enabled (default, requires Wait for focus), each placeholder page gets an automatic countdown timer: + +| Tab | Auto-loads after | +|-----|-----------------| +| 1st | 1 second | +| 2nd | 2 seconds | +| 3rd | 3 seconds | +| … | … | + +The placeholder shows a live countdown with a shrinking progress bar. Clicking **Load now →** on any placeholder page bypasses the timer immediately. + +This staggers network requests so your browser isn't hit by all pages at once, while still loading everything in the background without you having to manually focus each tab. + +--- + +## Options reference + +| Option | Default | Description | +|---|---|---| +| Wait for focus to load | ✅ On | Opens a placeholder page; navigates only on tab focus | +| Delayed load | ✅ On | Adds a staggered per-tab countdown (requires Wait for focus) | + +The mode badge in the popup header shows the current active mode: **lazy**, **lazy + delay**, or **eager**. + +--- + +## File structure + +``` +url-launcher/ +├── manifest.json # Extension manifest (Manifest V3) +├── popup.html # Toolbar popup UI +├── popup.js # Popup logic — URL parsing, extraction, tab creation +├── loader.html # Lightweight placeholder page shown in lazy mode +└── loader.js # Placeholder logic — focus detection and countdown timer +``` + +--- + +## Permissions + +| Permission | Why it's needed | +|---|---| +| `tabs` | To open new tabs via `chrome.tabs.create` | + +No data is collected, sent anywhere, or stored. Everything runs locally. + +--- + +## Browser compatibility + +Requires a Chromium-based browser with Manifest V3 support: + +- Google Chrome 88+ +- Microsoft Edge 88+ +- Brave, Opera, Vivaldi (recent versions) + +Firefox is not supported (uses a different extension API). + +--- + +## Contributing + +Bug reports and pull requests are welcome. When reporting an issue, please include: + +- Chrome version (`chrome://version`) +- A description of the URLs or text you were working with +- What you expected vs. what happened + +--- + +## License + +MIT — do whatever you want with it. \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..15edc2be87f6b175eaefb7bba50bf1b89965656c GIT binary patch literal 39752 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 Phx;@)w!TR)^osur?Vl9E literal 0 HcmV?d00001