<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>browser | UCSC OSPO</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/browser/</link><atom:link href="https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/browser/index.xml" rel="self" type="application/rss+xml"/><description>browser</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Mon, 26 Jan 2026 12:00:00 -0800</lastBuildDate><image><url>https://deploy-preview-1007--ucsc-ospo.netlify.app/media/logo_hub6795c39d7c5d58c9535d13299c9651f_74810_300x300_fit_lanczos_3.png</url><title>browser</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/browser/</link></image><item><title>Peersky Browser</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/peersky/</link><pubDate>Mon, 26 Jan 2026 12:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/peersky/</guid><description>&lt;p>&lt;a href="https://peersky.p2plabs.xyz/" target="_blank" rel="noopener">Peersky Browser&lt;/a> is an experimental personal gatekeeper to a new way of accessing web content. In a world where a handful of big companies control most of the internet, Peersky leverages distributed web technologies—&lt;a href="https://ipfs.tech/" target="_blank" rel="noopener">IPFS&lt;/a>, &lt;a href="https://holepunch.to/" target="_blank" rel="noopener">Hypercore&lt;/a>, and &lt;a href="https://www.bittorrent.com/" target="_blank" rel="noopener">BitTorrent&lt;/a> return control to the users. With integrated local P2P applications, Peersky offers a fresh, community-driven approach to browsing.&lt;/p>
&lt;h3 id="implement-p2p-extension-store">Implement P2P Extension Store&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Browser Extensions&lt;/code>, &lt;code>P2P&lt;/code>, &lt;code>Electron&lt;/code>, &lt;code>IPFS&lt;/code>, &lt;code>Hypercore&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> JavaScript, Electron.js, HTML/CSS, P2P&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/akhilesh-thite/">Akhilesh Thite&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Build a decentralized extension distribution flow that archives WebExtensions into a predictable P2P-friendly layout and installs directly from P2P URLs.&lt;/p>
&lt;p>&lt;strong>Tasks:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Define the P2P extension layout:&lt;/strong>
&lt;ul>
&lt;li>Standardize &lt;code>/extensions/{name}/{version}/extension.zip&lt;/code> and &lt;code>/extensions/{name}/index.json&lt;/code>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Design install compatibility for P2P URLs:&lt;/strong>
&lt;ul>
&lt;li>Support &lt;code>peersky://extensions/...&lt;/code> and P2P links from IPFS or Hypercore.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Archive Chrome Web Store extensions to P2P:&lt;/strong>
&lt;ul>
&lt;li>Use &lt;a href="https://github.com/akhileshthite/chrome-extension-fetch" target="_blank" rel="noopener">chrome-extension-fetch&lt;/a> to fetch CRX, convert to ZIP, and store it in the layout.&lt;/li>
&lt;li>Update &lt;code>index.json&lt;/code> with metadata like version, &lt;code>P2P_URL&lt;/code>, and &lt;code>fetchedAt&lt;/code>.&lt;/li>
&lt;li>Publish the folder to IPFS or Hypercore and feed the link into the install flow.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Add settings and trust model:&lt;/strong>
&lt;ul>
&lt;li>Add a “Load from P2P” settings toggle.&lt;/li>
&lt;li>Support curated extension hoards (&lt;code>index.json&lt;/code>) and automated updates.&lt;/li>
&lt;li>Clarify integrity assumptions and sandboxing expectations.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>More details in the issue:&lt;/strong> &lt;a href="https://github.com/p2plabsxyz/peersky-browser/issues/42" target="_blank" rel="noopener">https://github.com/p2plabsxyz/peersky-browser/issues/42&lt;/a>&lt;/p>
&lt;h3 id="backup--restore-system-p2p-json--tabs-restore">Backup &amp;amp; Restore System (P2P JSON + Tabs Restore)&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>P2P&lt;/code>, &lt;code>Backup&lt;/code>, &lt;code>Session Restore&lt;/code>, &lt;code>Electron&lt;/code>, &lt;code>Onboarding&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> JavaScript, Electron.js, HTML/CSS, P2P&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/akhilesh-thite/">Akhilesh Thite&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Implement a backup and restore pipeline for Peersky’s P2P app data and session state, including an onboarding import flow for tabs from other browsers.&lt;/p>
&lt;p>&lt;strong>Tasks:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Generate a P2P backup bundle:&lt;/strong>
&lt;ul>
&lt;li>Create a single &lt;code>.zip&lt;/code> that contains &lt;code>lastOpened.json&lt;/code>, &lt;code>tabs.json&lt;/code>, &lt;code>ensCache.json&lt;/code>, and the &lt;code>ipfs/&lt;/code> and &lt;code>hyper/&lt;/code> directories.&lt;/li>
&lt;li>Add an option to generate a CID for the backup zip for instant sharing.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Restore from settings:&lt;/strong>
&lt;ul>
&lt;li>Upload a P2P backup zip file.&lt;/li>
&lt;li>Load a backup from an IPFS or Hyper CID.&lt;/li>
&lt;li>Import Chrome/Firefox tab exports produced by a helper extension.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Define the helper extension export format:&lt;/strong>
&lt;ul>
&lt;li>Create a small extension under &lt;a href="https://github.com/p2plabsxyz/" target="_blank" rel="noopener">p2plabsxyz&lt;/a> to export windows and tabs (URLs, titles, window grouping, active tab indexes).&lt;/li>
&lt;li>Ensure the export format is compatible with Peersky’s import pipeline.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Add onboarding import flow:&lt;/strong>
&lt;ul>
&lt;li>Show &lt;code>onboarding.html&lt;/code> on first launch and prompt “Import tabs from another browser?”.&lt;/li>
&lt;li>Guide users to install the helper extension and import the generated file.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Align with existing persistence:&lt;/strong>
&lt;ul>
&lt;li>Reuse &lt;code>lastOpened.json&lt;/code>, &lt;code>tabs.json&lt;/code>, and &lt;code>peersky-browser-tabs&lt;/code> localStorage for restores.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>More details in the issue:&lt;/strong> &lt;a href="https://github.com/p2plabsxyz/peersky-browser/issues/60" target="_blank" rel="noopener">https://github.com/p2plabsxyz/peersky-browser/issues/60&lt;/a>&lt;/p></description></item><item><title>Peersky Browser</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/peersky/</link><pubDate>Tue, 18 Feb 2025 12:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/peersky/</guid><description>&lt;p>&lt;a href="https://peersky.p2plabs.xyz/" target="_blank" rel="noopener">Peersky Browser&lt;/a> is an experimental personal gatekeeper to a new way of accessing web content. In a world where a handful of big companies control most of the internet, Peersky leverages distributed web technologies—&lt;a href="https://ipfs.tech/" target="_blank" rel="noopener">IPFS&lt;/a>, &lt;a href="https://holepunch.to/" target="_blank" rel="noopener">Hypercore&lt;/a>, and Web3—to return control to the users. With integrated local P2P applications, Peersky offers a fresh, community-driven approach to browsing.&lt;/p>
&lt;h3 id="implement-web-extensions-integration">Implement Web Extensions Integration&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Browser Extensions&lt;/code>, &lt;code>UI/UX&lt;/code>, &lt;code>Electron&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> JavaScript, Electron.js, HTML/CSS&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/akhilesh-thite/">Akhilesh Thite&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Implement web extension support in Electron by leveraging its web extension node modules, pre-installing extensions, and providing a user interface for adding, updating, and securely managing them.&lt;/p>
&lt;p>&lt;strong>Tasks:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Loading Extensions via Electron Modules:&lt;/strong>
&lt;ul>
&lt;li>Utilize Electron’s web extension node modules to load extensions, as Electron.js doesn&amp;rsquo;t support marketplace integration.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Default Pre-installed Extensions:&lt;/strong>
&lt;ul>
&lt;li>Configure a set of pre-installed extensions like uBlock to offer immediate value for privacy and security.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>User-Installed Extensions UI:&lt;/strong>
&lt;ul>
&lt;li>Create an interface where users can add extension &lt;code>.zip&lt;/code> files in &lt;code>peersky://settings&lt;/code>.&lt;/li>
&lt;li>Add an option for users to manually update all installed extensions.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Validate and Sandbox Extensions:&lt;/strong>
&lt;ul>
&lt;li>Check the integrity and manifest structure of the uploaded extensions to ensure they meet Chrome Manifest V3 requirements.&lt;/li>
&lt;li>Apply sandboxing techniques and enforce strict content security policies to mitigate potential risks.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Extension Management UI:&lt;/strong>
&lt;ul>
&lt;li>Design a dedicated UI at the top right of the navigation bar to manage extensions, including stack order and pinning functionality for quick access and organization.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="implement-chat-history-synchronization-for-hyper-chat-rooms">Implement Chat History Synchronization for Hyper Chat Rooms&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>P2P Communication&lt;/code>, &lt;code>Hypercore Protocol&lt;/code>, &lt;code>Real-time Synchronization&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> JavaScript, Distributed Systems, P2P&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/akhilesh-thite/">Akhilesh Thite&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Implement chat history synchronization for Hyper chat rooms, ensuring that new devices retrieve all past messages—including those sent while offline—for a seamless user experience. Additionally, research and experiment with mDNS to enable true offline, peer-to-peer messaging on local networks.&lt;/p>
&lt;p>&lt;strong>Tasks:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>History Retrieval Mechanism:&lt;/strong>
&lt;ul>
&lt;li>Implement chat history synchronization so that when a new device joins a Hyper chat room, it retrieves the entire chat history from the Hypercore feed.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Offline Message Inclusion:&lt;/strong>
&lt;ul>
&lt;li>Ensure that devices that were offline during prior messages can still access the full chat history upon joining the room, even after messages were sent in their absence.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>UI Integration:&lt;/strong>
&lt;ul>
&lt;li>Create a seamless experience for users across devices by ensuring that no messages are lost and that users can access the full chat history regardless of their online status.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Research mDNS (Multicast DNS):&lt;/strong>
&lt;ul>
&lt;li>mDNS is a protocol that allows devices on the same local network to communicate with each other without the need for a central DNS server. This enables peer-to-peer communication, especially in offline environments, making it ideal for offline messaging.&lt;/li>
&lt;li>Experiment with the &lt;code>mDNS()&lt;/code> function to enable peer-to-peer communication for offline chat rooms.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Create Hyper Chat Web App Version:&lt;/strong>
&lt;ul>
&lt;li>Currently, Hyper chat is accessed via &lt;code>peersky://p2p/chat&lt;/code>. Develop a web app version of Hyper chat that can be hosted on the &lt;code>hyper://&lt;/code> protocol (&lt;code>hyper://chat.p2plabs.xyz&lt;/code>). This way, other P2P browsers (like &lt;a href="https://agregore.mauve.moe/" target="_blank" rel="noopener">Agregore&lt;/a>) can use it to communicate.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item></channel></rss>