📚 Complete Documentation
Check out the
README
for complete extension documentation and usage guides.
🔗 Quick Links
🔧 How It Works
FrameWise uses Chrome's Windows API to create and position multiple browser windows simultaneously.
Here's a detailed explanation of how the extension works:
Core Functionality
1. URL Input & Validation
- Enter up to 8 URLs in the extension popup
- Real-time URL validation ensures proper format (must start with
http:// or https://)
- Security checks block private IPs and localhost URLs to prevent SSRF attacks
- Duplicate URL detection prevents opening the same site multiple times
2. Layout Selection
- Choose from 9 different layout options via the visual layout picker
- Auto Layout: Automatically selects the best layout based on screen size and number of URLs
- Single Window Layouts: Fullscreen (1 page), Vertical split (2 pages), Horizontal split (2 pages)
- Multi-Window Layouts: Large left/top with smaller windows (3 pages), 2×2 Grid (4 pages)
- Tabs Mode: For 5-8 sites, opens all URLs as tabs in a new or existing window
- Visual thumbnails show exactly how windows will be arranged
3. Window Creation & Positioning
- Uses Chrome's
chrome.windows.create() API to create new windows
- Calculates optimal window positions based on screen dimensions and selected layout
- Each window is positioned to avoid overlap and maximize screen usage
- Windows can be opened in the background to avoid interrupting your workflow
4. Collections System
- Save your URL configurations and layout preferences as "collections"
- Collections are stored locally using Chrome's
chrome.storage.local API
- Each collection can store: up to 8 URLs, selected layout, window title, and advanced options
- Quick load, update, or delete collections (maximum of 100 collections)
5. Activity History & Undo
- Tracks your last 5 actions (add/delete collections, modify URLs, etc.)
- One-click undo for recent actions
- Activity history panel shows what was changed and when
Technical Details
Architecture:
- Built with Chrome Extensions Manifest V3 for modern security and performance
- Service worker (
background.js) handles window creation and messaging
- Popup interface provides the main user interface
- Separate layout picker window for visual layout selection
- All data stored in
chrome.storage.local - never leaves your device
- Pure vanilla JavaScript, no frameworks or external libraries
Security Features:
- SSRF Protection: Blocks private IP ranges and localhost
- XSS Protection: All user input is sanitized and escaped
- Input Validation: URL length limits (2048 chars) prevent DoS attacks
- Storage Quotas: Automatic limits prevent storage exhaustion
- CSP: Content Security Policy prevents code injection
- No Remote Code: All code is bundled locally
❓ Frequently Asked Questions
How do I use FrameWise?
- Click the FrameWise icon in the Chrome toolbar
- Enter 1 to 8 URLs in the provided fields (first 4 are always visible, click "Show 4 more URLs" for URLs 5-8)
- Click the layout icon to open the visual layout picker
- Select a layout that matches your needs (Auto, Grid, Vertical, Horizontal, etc.)
- Click "Open" (▶) to create and position the windows
- Use "Close" (✖) to close all windows opened by FrameWise
Check the
README
for more detailed instructions.
Can I save my configurations?
Yes! You can save your configurations as "collections" to quickly
reuse them. Here's how:
- Configure your URLs and select a layout
- Optionally enter a window title for easy identification
- Click "Save" (💾) button
- Enter a name for your collection
- Your collection is now saved and appears in the collections list
You can save up to 100 collections. To load a collection, click on it in the list.
To update an existing collection, load it, make changes, and click "Update".
To delete a collection, click the 🗑️ icon next to it.
Windows are not opening correctly
If windows aren't opening or positioning correctly, check the following:
-
URL Format: URLs must be valid and start with
https:// or
http://. The extension provides real-time validation feedback.
-
Permissions: Ensure you've granted the necessary permissions (the extension should
request them automatically on first use). Check
chrome://extensions/ if needed.
-
Chrome Version: Your Chrome version should be up to date (Chrome 114+ recommended for Manifest V3 support)
-
Security Restrictions: Private IPs (10.x.x.x, 172.16-31.x.x, 192.168.x.x) and localhost URLs are blocked for security
reasons (SSRF protection)
-
Screen Size: Very small screens may cause positioning issues. The extension uses
screen.availWidth and screen.availHeight for calculations.
-
System Borders: Depending on your OS, system window borders may cause slight positioning offsets. This is normal.
-
Multi-Monitor: Basic multi-monitor support is available, but advanced positioning across multiple displays may have limitations.
If issues persist, try refreshing the extension or restarting Chrome.
You can also report the issue on GitHub.
Does the extension collect my data?
No! FrameWise works entirely locally. All your data stays on your
machine. We don't collect, track, or transmit any information.
Check our
Privacy Policy for more
information.
Can I use more than 8 sites?
Currently, FrameWise supports up to 8 simultaneous sites. This limit is designed to:
- Prevent performance issues from opening too many windows at once
- Ensure proper window positioning and layout management
- Maintain a clean and manageable user interface
For 5-8 sites, the extension automatically uses "tabs" mode, which opens all URLs as tabs in a single window.
You can choose to open tabs in a new window or add them to the current window.
If you need to monitor more than 8 sites, consider creating multiple collections and opening them sequentially,
or use the extension multiple times with different URL sets.
What is the Activity History feature?
Activity History is a powerful undo feature that tracks your last 5 actions in FrameWise. It allows you to:
- Undo accidental deletions of collections
- Revert URL modifications
- Restore cleared configurations
- Undo collection updates
The activity history panel shows your recent actions with timestamps. Click the undo button (↶) next to any action to revert it.
The history is stored in memory and doesn't persist after closing the extension popup, keeping your storage clean.
What's the difference between layouts?
FrameWise offers 9 different layout options:
- Auto: Automatically selects the best layout based on screen size and number of URLs
- 1 • Full: Single fullscreen window (for 1 URL)
- 2 • Vertical: Two windows side by side (for 2 URLs)
- 2 • Horizontal: Two windows stacked vertically (for 2 URLs)
- 3 • Left: Large window on left, two smaller windows on right (for 3 URLs)
- 3 • Top: Large window on top, two smaller windows below (for 3 URLs)
- 4 • Grid: 2×2 grid of four equal windows (for 4 URLs)
- Tabs • New window: All URLs as tabs in a new window (for 5-8 URLs)
- Tabs • Current: All URLs as tabs in the current window (for 5-8 URLs)
The visual layout picker shows thumbnails of each layout so you can see exactly how windows will be arranged before opening them.
How do I uninstall the extension?
- Go to
chrome://extensions/
- Find FrameWise in the list
- Click "Remove"
All locally stored data will be automatically deleted when you
uninstall.
🐛 Report a Bug
If you encounter a problem, please
open an issue on GitHub
including:
- Problem description - What happened?
-
Steps to reproduce - How can we reproduce the
bug?
-
Expected vs actual behavior - What should happen
vs what actually happens?
-
Chrome version - Your Chrome browser version
-
Extension version - Current FrameWise version
-
Screenshot - If applicable, include a screenshot
💡 Improvement Suggestions
Have an idea to improve FrameWise? We'd love to hear it!
Open an issue
with the "enhancement" label or contact us via GitHub.
📖 Documentation
🤝 Contributing
Contributions are welcome! Check out the
GitHub repository
for more information on how to contribute to the project. We
appreciate your help in making FrameWise better!
📧 Contact
For any questions or issues, the best way to contact us is via: