Search
Live Wikipedia, Wikidata and Stack Exchange data with source links, snippets, knowledge facts and copy/open actions.
One real workspace for web knowledge, images and music. Live public APIs, local history and a clean workflow — no fake result counters.
Live Wikipedia, Wikidata and Stack Exchange data with source links, snippets, knowledge facts and copy/open actions.
Real Wikimedia Commons and Openverse results with lazy loading, source labels, fullscreen viewing and endless scrolling.
Real iTunes search results with artwork, preview playback, queue, liked tracks and persistent local library.
Search a topic, then jump directly to its images or music without losing your query.
Temporary chat with one central, read-only SearchXR context across modules, including evidence-grounded reel inspection.
A complete standalone specification and SDK reference for developers who want to understand, integrate and extend the XR runtime. Contracts, implementation, operations and safeguards are separated into dedicated documentation pages.
Thirty-two documentation pages, a browser-ready SDK, a shared Matrix Encoding runtime layer and a clean contract-first model with a live AI Studio model layer.
Copy-ready SDK source, lifecycle rules, command execution, event subscriptions, JSON-safe state, optional HTTP transport, data contracts, security guidance and integration patterns.
This documentation defines the project-owned XR SDK and contracts. It does not imply an already-hosted production API, package registry publication, external certification or third-party endorsement.
The public concepts developers should build against.
| Surface | Purpose | Entry |
|---|---|---|
| Runtime | Lifecycle, configuration and snapshots. | new SearchXRXR() |
| Commands | Named operations with structured results. | xr.execute() |
| Events | Ready, command, error and custom topics. | xr.on() |
| HTTP | Optional network transport. | xr.request() |
| Studio | OpenRouter + Pollinations-backed research, text synthesis and image generation surface. | Studio & Model Matrix |
Go from a blank project to a working runtime with the same contract used throughout this documentation.
Download the SDK from this documentation page, save it as searchxr-xr.js, then import it as an ES module.
import SearchXRXR from './searchxr-xr.js';
const xr = new SearchXRXR({
name: 'Acme XR Workspace',
version: '1.0.0',
baseURL: 'https://api.example.com/'
});
await xr.init();Commands are local application capabilities. Keep handlers deterministic and easy to test.
xr.register('project.get', async ({ id }) => ({
id,
status: 'active'
}));
const result = await xr.execute('project.get', { id: 'proj_123' });
console.log(result);The button creates a browser download from the exact source displayed on the SDK page.
Understand the runtime before connecting it to application code or a backend.
Owns lifecycle, state, configuration and the command registry. init() is idempotent.
A named async or sync function invoked through execute() and wrapped in one result format.
A notification emitted by the runtime. Subscribers receive a payload and a cleanup function.
name | Project name. |
version | Project semantic version. |
status | created, ready or destroyed. |
sdk | SDK runtime version. |
capabilities | Runtime capabilities. |
updatedAt | ISO-8601 timestamp. |
{
"ok": true,
"name": "xr.health",
"data": { "status": "ok" },
"meta": { "durationMs": 2, "at": "2026-08-30T10:00:00.000Z" }
}ok. Do not parse human-readable exception strings as application protocol.Full standalone JavaScript runtime. The same source can be copied into a project or downloaded directly.
constructor → init → ready → destroy
configure · register · unregister · execute · getState · manifest
request() uses browser fetch() with timeout and normalized errors.
Method-by-method stable runtime reference.
new SearchXRXR(config?)Creates an independent runtime. Config: name, version, baseURL, timeout.
init() → Promise<XRState>Moves runtime to ready. Repeated calls return the current snapshot.
configure(patch) → XRStateMerges configuration.
register(name, handler) → SDKRegisters a local command.
unregister(name)Removes a command.
execute(name, args?) → Promise<XRResult>Runs a command or returns a structured failure.
getState() → XRStateReturns JSON-safe state.
manifest() → XRManifestReturns project identity and capabilities.
on(name, handler) → cleanupSubscribes to an event and returns an unsubscribe function.
request(path, options?) → Promise<XRResult>Optional HTTP client using fetch and AbortController timeout.
Connect XR to a real backend without hard-coding a vendor, framework or database.
baseURL to your service. XR intentionally keeps auth and application policy outside the generic transport layer.const res = await xr.request('/v1/projects/proj_123');
if (!res.ok) {
console.error(res.error.code, res.error.message);
return;
}
console.log(res.status, res.data);const res = await xr.request('/v1/projects', {
method: 'POST',
body: JSON.stringify({ name: 'New Project' })
});| Timeout | AbortController based. |
| JSON | Attempts JSON parsing, preserves text if parsing fails. |
| Status | Non-2xx responses normalize to HTTP_*. |
| Network | Fetch failures normalize to NETWORK. |
Build observability and extensions without modifying the core class.
const stop = xr.on('command', event => {
console.log(event.name, event.meta.durationMs);
});
const stopError = xr.on('error', event => {
console.warn(event.error.code);
});function telemetryPlugin(xr) {
xr.register('telemetry.flush', async () => ({
sent: true,
at: new Date().toISOString()
}));
return () => xr.unregister('telemetry.flush');
}A production reference model separating interface, runtime, services and safeguards.
Docs, UI and host application integrations. User intent starts here.
XR SDK owns commands, events, state, lifecycle and optional transport.
Your API, auth, data store, jobs, observability and policies live beyond the generic SDK.
Developer action
↓
XR command / request
↓
Local validation + runtime state
↓
Optional HTTP transport
↓
Your service boundary
↓
Database / workers / external systems
↓
Structured result
↓
UI + telemetryXR documentation navigation and its local documentation runtime do not consume or depend on the host application's Search, Images, Music, Gemini or Studio state.
Interactive reference telemetry for the XR runtime model. Values here are documentation examples, not claims about production traffic.
| Surface | Contract | SDK | Docs |
|---|---|---|---|
| Commands | Yes | Yes | Yes |
| Events | Yes | Yes | Yes |
| HTTP | Yes | Yes | Yes |
| Errors | Yes | Yes | Yes |
| Versioning | Yes | Yes | Yes |
Portable JSON shapes for projects, tools and integration tests.
{
"id": "searchxr.xr",
"name": "SearchXR XR Project",
"version": "1.0.0",
"sdk": "2.5.0-XR",
"entry": "SearchXRXR",
"capabilities": ["runtime","commands","events","http","state"]
}{
"ok": false,
"error": {
"code": "NOT_FOUND",
"message": "Unknown command",
"name": "project.get"
},
"meta": { "at": "2026-08-30T10:00:00.000Z" }
}| JSON-safe | Serializable in tests, logs and network payloads. |
| Explicit | Stable field meanings; no hidden positional semantics. |
| Versioned | Breaking contract changes require a major version. |
| Traceable | Responses include useful metadata and timestamps. |
Security belongs around the runtime as well as inside application boundaries.
Never place private server credentials in browser-delivered source.
Backend authorization is the source of truth. Hiding a UI button is not access control.
Validate external inputs at every trust boundary.
Predictable codes make UI and service handling easier to test.
| Code | Cause | Response |
|---|---|---|
NOT_READY | execute before init. | Initialize first. |
NOT_FOUND | Unknown command. | Check registration/name. |
INTERNAL | Handler threw. | Log safely and show controlled failure. |
HTTP_4xx | API rejected request. | Fix request/auth/policy. |
HTTP_5xx | Service-side error. | Observe and retry only when safe. |
NETWORK | Fetch did not complete. | Check connectivity/service. |
TIMEOUT | AbortController limit hit. | Optimize or carefully adjust timeout. |
XR does not auto-retry because a blind retry can duplicate mutations. Add retries only where the operation is idempotent or protected by an idempotency strategy.
Subscribe to command and error, then send redacted telemetry to your own monitoring stack.
Practical copy-ready patterns for browser apps and service integrations.
import SearchXRXR from './searchxr-xr.js';
const xr = new SearchXRXR({
name: 'Example Workspace',
version: '1.0.0',
baseURL: 'https://api.example.com/'
});
xr.register('greet', async ({ name = 'Developer' }) => ({
message: `Hello, ${name}`
}));
xr.on('error', e => console.error('[XR]', e.error.code));
await xr.init();
const local = await xr.execute('greet', { name: 'Sahitya' });
console.log(local.data.message);
const remote = await xr.request('/v1/projects');
if (remote.ok) console.log(remote.data);Button → loading state → execute() → branch on ok → render sanitized data.
Register deterministic local handlers and test them without a browser UI or external network.
Documentation and SDK evolution in one release track.
Minor and patch releases should preserve existing method names and result envelopes. Breaking contract changes should increment the major SDK version and ship migration guidance.
Advanced project attribution, ecosystem ownership and leadership context for SearchXR and X-Star Community.
Founder & Lead Developer · SearchXR
Founder & CEO · X-Star Community
SearchXR is an open-source ecosystem within X-Star Community. It is developed and maintained as part of the wider X-Star Community open-source ecosystem, with Sahitya serving as the founder and lead developer of SearchXR and the founder and CEO of X-Star Community.
The SearchXR identity therefore represents a project ecosystem under X-Star Community rather than a separate organization unrelated to it.
◎ Instagram · @sahitya.official001Open-source ecosystem
SearchXR is an open-source ecosystem within X-Star Community, covering the SearchXR platform, XR modules, SDK, documentation and related developer surfaces.
Parent open-source community
X-Star Community is the broader open-source ecosystem in which SearchXR is developed and positioned.
Sahitya
Founder & Lead Developer of SearchXR and Founder & CEO of X-Star Community.
SearchXR should be described as a project ecosystem inside X-Star Community. Its modules, documentation and developer runtime are part of that broader open-source community structure.
Public-facing SearchXR metadata and documentation should identify X-Star Community as the parent ecosystem and Sahitya as the founder-led project and community leadership identity.
VeoXR is the dedicated Rati Pandey video surface inside SearchXR XR. Its primary purpose is to connect SearchXR with the official Rati Pandey channel/feed experience and present that content as a focused video environment.
This page removes ambiguity: VeoXR is not intended to be a general-purpose video search engine. It is a dedicated presentation layer centered on Rati Pandey's official content experience.
VeoXR is mainly connected to Rati Pandey's official channel/feed. The module exists to surface that creator's video content inside the SearchXR environment. The current embedded implementation uses the rati-pandey creator feed surface already bundled with VeoXR, with the module focused on Rati Pandey Shorts/video content.
VeoXR should not be described as a generic YouTube search tab. Search, discovery and unrelated platform content remain outside the VeoXR product definition unless a future release explicitly changes that contract.
The host integration remains exactly as previously implemented. This update is documentation-only: no VeoXR search, feed logic, viewer behavior or embedded source is changed.
| Layer | Current behavior | Contract |
|---|---|---|
| SearchXR navigation | User opens the dedicated Veo route from the host application. | data-view="veo" |
| Host view | The host exposes one isolated Veo container. | #veoView |
| Embedded surface | The existing VeoXR application is rendered inside its iframe. | #veoXRFrame |
| Mount model | The VeoXR source is mounted through the existing isolated srcdoc lifecycle. | Existing mount guard |
| Content identity | Primary creator/content identity is Rati Pandey's official channel/feed. | VeoXR product definition |
VeoXR remains a self-contained embedded application so its document-level CSS, scripts and runtime do not leak into the SearchXR host.
The current VeoXR embedded document is preserved exactly as supplied. Documentation changes do not modify its UI or content runtime.
The host keeps VeoXR inside #veoXRFrame, preventing VeoXR's internal styles and document listeners from becoming global SearchXR state.
The existing Veo route and isolated mount remain the stable host contract.
Every future VeoXR update should make the Rati Pandey connection clearer rather than introducing ambiguity about what the module is.
Advanced engineering documentation for the embedded SearchXR Map workspace. This page documents the implementation surface present in the current build, its data flow, interaction model, network dependencies, and safe extension points.
The current map build exposes a focused, browser-first feature surface rather than a broad mapping SDK.
| Capability | Current behavior | Primary implementation surface | Boundary |
|---|---|---|---|
| Map rendering | Interactive pan/zoom map centered on a stored latitude/longitude state. | L.map() + Leaflet tile layer | Requires map tiles to load from the network. |
| Place search | Typed query is sent to Photon with the current map center as context; up to eight features are mapped into local result objects. | photon.komoot.io/api/ | Third-party service availability and rate limits are external. |
| Reverse geocoding | Map clicks trigger a Photon reverse lookup and create a structured place result or coordinate fallback. | photon.komoot.io/reverse | A failed lookup falls back to raw coordinates. |
| Current location | Browser geolocation flies the map to the reported device coordinates and drops a “You are here” marker. | navigator.geolocation | Permission and browser support are user-controlled. |
| Directions | Selected coordinates can open a Google Maps directions URL in a new tab. | https://www.google.com/maps/dir/ | Routing itself is delegated to the external service. |
| Layer switch | Toggle between the OSM map tiles and an ArcGIS World Imagery tile layer. | Leaflet tile-layer replacement | Imagery is a separate external tile source. |
SearchXR hosts the module; the map workspace owns its internal rendering state and only exposes the iframe boundary to the host.
data-view="map" selects #mapView.srcdoc.The map implementation converts Photon features into a predictable object used for list rendering and markers. The normalized fields include an id, name, address, type, latitude, longitude and the raw provider feature.
{
"id": "provider-id",
"name": "Place name",
"address": "Readable address",
"type": "category:value",
"lat": 28.6139,
"lng": 77.2090,
"raw": { "provider": "feature" }
}These are documentation-level contracts extracted from the current embedded implementation.
| Operation | Input | Success | Failure behavior |
|---|---|---|---|
| Search | query + current center | Photon features → normalized places → markers | Empty results or controlled “search failed” notice |
| Reverse | map click latitude/longitude | First Photon feature becomes the selected place | Coordinate-only fallback place |
| Locate | browser permission | Map flies to device coordinates and shows marker | Permission denied / unsupported notice |
| Directions | selected latitude/longitude | External Google Maps directions tab | Depends on browser popup/navigation policy |
The module is not a fully offline map. Its renderer, tiles, geocoder and imagery paths are network-backed.
The embedded source first attempts the Leaflet module, then falls back to the public Leaflet script when the runtime is online.
Default tiles use OpenStreetMap; the alternate imagery layer uses an ArcGIS World Imagery tile endpoint.
Photon is used for forward search and reverse geocoding. Provider response shape is converted before rendering.
Safe places to extend the current module without changing the SearchXR host contract.
Keep provider-specific fetch/parsing inside an adapter that outputs the same normalized place object.
Add saved places, categories, marker clustering or route overlays inside the embedded map document so host CSS remains isolated.
Keep data-view="map", #mapView and the single iframe mount lifecycle stable.
Operational checks before calling the module production-ready.
| Tiles | Confirm required tile sources remain reachable and comply with their attribution requirements. |
| Geolocation | Use a secure context and test denied, unavailable and timeout paths. |
| Provider errors | Keep user-facing failures controlled; never expose raw provider payloads as trusted UI text. |
| Popup safety | Sanitize provider-controlled strings before injecting them into HTML popups. |
| Performance | Debounce text search and avoid recreating the map instance on every state update. |
| Host isolation | Preserve the iframe boundary unless the module is deliberately re-architected. |
Geo is the SearchXR social-video feed surface powered by the supplied Juicer embed. The module keeps the external feed presentation intact and is used to surface video content from the configured official-channel set.
The Geo feed is documented as the official-channel video surface for the following channel set. Their video content is intended to appear through the live feed connection.
Official channel video feed.
Official channel video feed.
Official channel video feed.
Official channel video feed.
Official channel video feed.
Official channel video feed.
The Geo host view renders the supplied Juicer iframe exactly as provided. No custom Geo gallery, reel database, map, geocoder, or replacement UI is included here.
<iframe src="https://www.juicer.io/api/feeds/ucfnpmylcmktofohzjb_yejg/iframe" frameborder="0" width="1000" height="1000" style="display:block;margin:0 auto;width:1000px;height:1000px;" title="UCfNPmyLCMkTOFoHzjB_YeJg - Juicer social media feed"></iframe>
SearchXR provides the host navigation entry and iframe container. Feed content, channel availability, ordering, presentation, and provider-side delivery remain controlled by the connected Juicer feed.
The Explainer module is the dedicated SearchXR media surface for the supplied logic-decode explainer video. It keeps the presentation focused on one video asset and exposes it through the same SearchXR module navigation.
The module provides a direct place inside SearchXR to watch the supplied Explainer asset. The current implementation is intentionally media-first: the module presents the video rather than adding a separate search, feed, or content system around it.
The supplied file is named searchXR_लॉजिक_डिकोड.mp4. In this build, the MP4 is embedded into the HTML payload and converted into a browser object URL when the Explainer view is opened.
Only the functionality required for the supplied explainer asset is documented here.
| Capability | Explainer behavior | Role |
|---|---|---|
| Playback | Native HTML5 video player with browser controls. | Watch the supplied explainer directly. |
| Responsive media | Video is displayed inside the SearchXR Explainer surface and supports inline playback. | Provide a consistent module experience across screen sizes. |
| Lazy module loading | The embedded MP4 is decoded when the Explainer view is selected. | Avoid initializing the media object before the module is needed. |
| Standalone asset | No external video feed or search API is required by the Explainer module itself. | Keep the explainer surface self-contained. |
The Explainer module is mounted as its own SearchXR view and remains separate from the existing SearchXR runtime documentation state.
data-view="explainer" targets #explainerView.
#explainerVideo is the HTML5 <video> element used for playback.
The Explainer module should remain a focused video surface. Do not silently redefine it as a generic media search or feed module without documenting that change.
The Explainer documentation describes the exact supplied asset and its current host integration, without changing the video content itself.
searchXR_लॉजिक_डिकोड.mp4 asset when making documentation-only updates.No current updates are documented on this page.
A dedicated SearchXR intelligence capability that lets Gemini inspect module evidence centrally, identify the most relevant reel or record, and produce grounded answers without opening or navigating the source module.
Gemini can answer natural requests such as “Geo me ye reel dekhna aur bata” or “VeoXR me ye short dekh ke summary de” from one central SearchXR context. It does not open Geo. It first resolves the likely reel from the bundled record set, then reads its exact metadata and attempts live visual evidence from the reel media when the browser can fetch it.
The intelligence layer can match a user request against the reel catalog by caption, post id, ordinal position and distinctive terms. The selected record is passed as structured evidence rather than as an instruction to navigate the UI.
For supported reel media, Gemini can attempt browser-side sampled-frame inspection. The system captures representative frames from the beginning, middle and later portion of the available video and sends those visual samples with the record metadata.
Gemini separates exact matches from topical relationships and keeps evidence boundaries explicit.
| Verdict | Meaning | Typical evidence |
|---|---|---|
| SAME | The requested item and discovered record/claim are the same. | Exact caption, same post id, or matching visual/content identity. |
| RELATED | The evidence points to the same subject or theme, but not the same item/claim. | Similar caption/topic with different id or materially different content. |
| NOT SAME | The available evidence distinguishes the items or claims. | Different caption, id, creator scope or incompatible visual evidence. |
| NOT ENOUGH EVIDENCE | The current central context cannot prove the requested claim. | Ambiguous reel reference, unreachable media or insufficient visual/data evidence. |
The Gemini UI is not a scripted progress animation. Every visible activity label corresponds to an actual operation being attempted or completed.
The UI can show Reading Geo…, Reading VeoXR… or another module-specific state while the central snapshot is assembled.
When a reel frame is actually being captured, Gemini shows the live capture state and then moves to evidence analysis.
When current verification is requested, the app reports the real Google grounding/search operation instead of inventing a fixed sequence.
These rules prevent same-name products, generic model knowledge and external search results from silently overriding SearchXR module identity.
Veo inside a SearchXR question resolves to SearchXR VeoXR and its Rati Pandey-focused video/Shorts surface unless the user explicitly requests Google's generative Veo technology. Gemini must never say that SearchXR VeoXR is a Google Veo model.
For “what does this SearchXR module do?”, bundled SearchXR docs/source and live module state outrank generic model memory. Web search is an optional verification layer, not a replacement for the module's own definition.
Studio shares the central SearchXR context contract for module-aware requests. Text work uses text-capable OpenRouter models; image creation can use either an OpenRouter image model or a Pollinations image model through the dedicated OpenRouter Images API or the official Pollinations SDK. The live Studio & Model Matrix is the capability index for current model options.
Gemini must never present unavailable evidence as if it were observed.
When a user asks Gemini to look at a Geo reel, the intelligence layer attempts real browser-side visual inspection of the selected media using the already mounted reel, the exact media URL and finally its thumbnail. No module navigation is required.
When frames are captured, Gemini can summarize visible people, setting, actions, objects, on-screen text and meaningful changes across sampled moments for both Geo Reels and VeoXR Shorts.
Cross-origin social/CDN media can block browser frame extraction. In that case Gemini reports metadata-only evidence instead of falsely claiming it watched the reel.
SearchXR ka official video-module surface. xTV ko real video discovery, YouTube-compatible playback, responsive presentation aur resilient upstream data routing ke liye design kiya gaya hai. Is page par xTV ki architecture, powers, playback model aur operational boundaries documented hain.
xTV ka playback layer YouTube ke official embedded player interface ko use karta hai. Video ID ko normalize karke https://www.youtube.com/embed/{videoId} player surface me load kiya jata hai, jisse playback YouTube ke supported embed environment ke through hota hai.
xTV YouTube ka replacement ya YouTube-branded first-party product nahi hai. Playback interface official YouTube embed surface par depend karta hai, jabki xTV ka SearchXR-owned layer discovery, presentation, normalization aur module orchestration handle karta hai.
xTV simple static video card nahi hai. Module ke bundled implementation me multiple upstream endpoints, resilient fetch fallback aur normalized video records ka flow hai.
User query ko video-focused search endpoints ke against request kiya jata hai. Search results ko normalize karke common xTV record me convert kiya jata hai.
query → endpoint rotation → JSON → normalize → video cards
Regional trending feed ke liye configured upstream endpoints ka fallback chain rakha gaya hai, jisse ek source unavailable hone par agla source try ho sakta hai.
region=IN → source A → source B → source C
HTTP response ko validate karke JSON parse hota hai. Failure par next configured endpoint try hota hai aur complete failure ko controlled module error state me return kiya jata hai.
xTV alag upstream response shapes ko ek consistent rendering contract me map karta hai.
| Field | Purpose | Behavior |
|---|---|---|
videoId | Canonical playback identifier. | URL, ID ya supported path patterns se extract kiya jata hai. |
title | Video display title. | Missing hone par safe fallback title use hota hai. |
thumbnail | Preview media. | Common thumbnail fields se resolve hota hai; protocol-relative URLs ko HTTPS me normalize kiya jata hai. |
uploaderName | Channel/uploader label. | Supported uploader fields se resolve hota hai. |
xTV ka visual layer real video discovery ko app-style browsing experience ke saath combine karta hai.
Viewport width ke according single-column, two-column aur three-column layouts use hote hain, isliye same module desktop aur mobile contexts me adapt karta hai.
Card select karne par player context top par focus hota hai aur selected video ka title/uploader metadata playback surface ke saath show hota hai.
Resolved thumbnail URL ko lazy image rendering ke through card preview me use kiya jata hai, aur missing thumbnail ke liye safe fallback state available hai.
xTV ek isolated SearchXR module ke roop me host hota hai, isliye core SearchXR documentation/runtime ke saath direct UI coupling ko minimum rakha gaya hai.
SearchXR Host ↓ xTV Module Shell ↓ Discovery / Trending Fetchers ↓ Video Normalizer ↓ Responsive Cards ↓ YouTube Embedded Player
xTV ko SearchXR ke module architecture ke saath add kiya gaya hai bina existing XR documentation pages ko replace kiye. Is doc page ka naam aur module identity sirf xTV hai.
Vidtube is SearchXR's dedicated video aggregator for resolving YouTube channel IDs, playlist IDs, handles and video IDs into a continuously rendered video feed. The supplied module focuses on fast, resilient aggregation and uses the official YouTube embed player for compatible playback.
Vidtube is designed as SearchXR's own aggregation layer: a user can supply a YouTube channel ID or another supported YouTube locator, and the module resolves available public video metadata into a feed UI. The bundled source uses multiple public upstream paths with failure fallback so one unavailable provider does not have to stop the entire module.
The supplied implementation contains multiple public Piped-style and Invidious-style endpoints plus YouTube RSS proxy fallbacks. Requests use timeouts and failover behavior, so the UI can continue when an individual upstream endpoint is unavailable.
Operational boundary: upstream providers, proxies, quotas, availability and network conditions can change. “Unlimited” describes the feed's lack of a hard UI result-count cap; it is not a promise of unlimited third-party service quota or uptime.
Vidtube does not need the YouTube Data API or the YouTube IFrame Player API JavaScript library to render the supplied player surface. Once a compatible YouTube video ID is resolved, the module opens the standard embedded player URL used by YouTube for iframe playback.
https://www.youtube.com/embed/{videoId}.Vidtube does not bypass YouTube, remove YouTube restrictions, or turn a YouTube video into a raw unrestricted media file. Playback is still subject to the source video's embed availability, browser policies, Content Security Policy and the provider's terms.
The original supplied Vidtube UI is preserved inside an isolated module frame so its React/Tailwind styling does not overwrite SearchXR host styles.
The supplied black, app-first interface remains the inner module UI, including the identifier input, add action, source cards, scrolling feed and focused player.
The module runs in its own iframe document. This keeps the bundled React runtime, Tailwind utility classes and local component styles independent from SearchXR's main CSS.
The source build includes responsive breakpoints for one-, two- and three-column layouts and an aspect-ratio video player that adapts to phone and desktop widths.
Vidtube separates the host shell from the supplied aggregation runtime.
SearchXR Host ↓ Vidtube Module Shell ↓ Input Normalizer ↓ Channel / Playlist / Video Resolver ↓ Upstream Fetch Fallbacks ↓ Normalized Video Records ↓ Original Vidtube Feed UI ↓ Official YouTube Embedded Player
data-view="vidtube" with #vidtubeView.#searchXRVidtubeFrame.SEARCHXR_VIDTUBE_B64.The supplied Vidtube UI can generate iframe embed snippets for its own feed/player views. A receiving website can embed a Vidtube-hosted document when that host permits framing; a site cannot force another site's CSP, X-Frame-Options or provider policies to allow embedding.
This module is based on the supplied index.html source. Its original visual surface and bundled runtime are embedded as the Vidtube module rather than rewritten into a different UI.
Legacy SearchXR XR deployment retained as a direct reference point for compatibility checks, migration review and historical comparison.
The earlier public XR deployment is available at the URL below. This link is kept as a historical reference and is not treated as the current SearchXR runtime.
Open nova-xr.netlify.app ↗Use the legacy deployment for comparison only. Current module behavior, documentation pages and integration contracts are maintained in this SearchXR build.
https://nova-xr.netlify.app/Recommended use of the historical deployment during development.
Compare UI, routes and runtime behavior before introducing breaking changes.
Record differences between legacy behavior and the current contract-first XR surface.
The linked deployment can change independently of this local SearchXR document.
All Studio model options in one simple, readable model list. Text, image, tools and reasoning capabilities come from the provider catalogs used by SearchXR.
Same simple presentation style as the Studio selectors: one model per line, same text scale, no oversized cards.
All image models exposed by the OpenRouter and Pollinations image catalogs, kept in the same simple model-list format.
SearchXR uses the direct Pollinations image HTTP API as the primary browser path, with the official SDK available as a secondary path. This avoids making image generation depend on the SDK module loading successfully.
| Surface | Implementation | Purpose |
|---|---|---|
| Model discovery | GET /image/models | Loads the current image model list. |
| Primary image generation | GET /image/{prompt} | Direct browser generation without an SDK dependency. |
| SDK fallback | @pollinations/sdk@5.0.0 | Secondary generation path when the browser SDK is available. |
| OpenAI-compatible | POST /v1/images/generations | Optional server/API integration path. |
These are provider-advertised capabilities, not quality rankings.
X-Drop is a live browser-based file sharing module that uses WebRTC data channels through PeerJS to connect peers and transfer files directly from one browser session to another.
The module provides a real browser-to-browser transfer workflow instead of a static upload mockup.
X-Drop creates a peer connection and transfers selected files over a WebRTC data channel. The sender exposes a share link and QR code so another browser can connect without uploading the file to a conventional storage service.
The receiver opens the X-Drop link, connects to the sender peer and reconstructs the incoming file as a browser Blob.
The current implementation follows a clear peer-to-peer lifecycle.
select or drop file
↓
create PeerJS / WebRTC peer
↓
create share link + QR
↓
receiver connects to sender
↓
send file metadata
↓
send binary chunks over the data channel
↓
receiver rebuilds Blob
↓
preview or download the received fileX-Drop is a browser module. Connection establishment, signaling availability and network traversal remain dependent on the WebRTC/PeerJS runtime and the configured STUN infrastructure.
The UI reports the actual connection and transfer state generated by the live PeerJS/WebRTC flow.
When a usable peer path is established, file bytes move through the WebRTC data channel between participating browser peers.
WebRTC connectivity can be affected by browser policy, NAT/firewall conditions, signaling availability and third-party network services.
SearchXR Stego is a browser-side image steganography workspace for hiding a secret message inside an image and decoding that message later from the resulting stego image.
The supplied implementation accepts common image inputs, normalizes them through a canvas, optionally encrypts the message, embeds the resulting bytes, and exports the encoded image.
image input
↓
Canvas normalization
↓
optional AES-GCM encryption
↓
32-bit payload-length header
↓
message bits written into red-channel LSBs
↓
PNG export
↓
stego image downloadCapacity is calculated from the usable pixel count with a 32-bit header reserved for the message length. The interface reports the calculated capacity and blocks an encode when the payload is too large.
The supplied implementation can encrypt the secret message before steganographic embedding. The password is never sent to a server by this module.
Password material is processed with PBKDF2 using SHA-256 and 120,000 iterations.
The derived key is used with AES-GCM 256-bit encryption and a random salt/IV generated in the browser.
During decoding, the hidden Base64 payload is decrypted only when a password is supplied; an incorrect password produces a controlled decryption error.
The decoder reads the 32-bit length header from the red-channel least-significant bits, reconstructs the byte payload, converts it back to text, and optionally decrypts it.
The implementation checks for an invalid length header, insufficient data, corrupted payload length and incomplete message data before returning decoded text.
The visible module identifies itself as client-side and “OFFLINE • NO NETWORK.” Image processing, encoding, decoding, encryption and copying are performed in the browser runtime.
The supplied module is a complete Encode + Decode workspace rather than a documentation-only example.
Upload an image, enter a secret message, optionally set a password, encode it, preview the resulting PNG and download it.
Upload a previously encoded image, optionally enter its password, decode the hidden message and copy the result.
The supplied React/Tailwind build uses one-column layouts on narrow screens and two-column encode/decode panels at larger widths.
Standalone SearchXR security controls exposed from the header gear. This page states the cryptographic mechanisms and browser APIs actually used by the module: password-derived AES-256-GCM encryption for protected exports, Ed25519 challenge signatures for connection identity, local audit/error reporting, cache controls, QTEL CORE Worker execution, RAS CORE heuristic code review and the shared Matrix Encoding runtime layer.
These are the concrete cryptographic steps performed in the browser. No claim is made that the browser can hide delivered source code or prove that a connection belongs to a human.
Purpose: protect a downloaded SearchXR data package while it is stored or moved outside the page.
PBKDF2 using SHA-256 and 310,000 iterations to derive 256 bits of key material.AES-GCM.password ↓ PBKDF2-SHA-256, 310000 iterations, random salt 256-bit key ↓ AES-GCM, random 96-bit IV ciphertext + authentication tag ↓ .searchxr-secure file
Purpose: verify that the browser controls the private key belonging to the published public key/fingerprint.
challenge ←$ random bytes signature = Sign_ed25519(privateKey, challenge) valid = Verify_ed25519(publicKey, signature, challenge)
What each mechanism protects, and what it does not.
| Mechanism | What it protects / proves | What it does not prove |
|---|---|---|
| AES-256-GCM | Confidentiality and authenticated integrity of the encrypted export when the correct password is available and the ciphertext is not altered. | It does not protect the password, secure an already-compromised browser, or hide the JavaScript delivered to the browser. |
| PBKDF2-SHA-256 | Derives key material from the password with a per-export random salt and configured work factor. | It does not make a weak password strong by itself; password quality remains important. |
| Ed25519 | Authenticates possession of a private signing key through challenge/response. | It does not establish a person's real-world identity or classify humans versus bots. |
| Random salt / IV | Separates independent exports and ensures each AES-GCM encryption uses fresh nonce material. | It is not a secret and does not replace the password. |
SearchXR can package selected local application data into a versioned encrypted file. The password never leaves the browser.
password ↓ PBKDF2-SHA-256 + random salt ↓ 256-bit AES-GCM key ↓ JSON application snapshot ↓ AES-256-GCM ciphertext + IV + salt ↓ .searchxr-secure download
Formula: salt ←$ random, iv ←$ random, dk = PBKDF2(password, salt, 256-bit, SHA-256), cipher = AES-GCMdk(iv, plaintext). This is an application export format, not a replacement for server-side secrets management.
A local keypair gives a stable cryptographic identity without pretending that cryptography can distinguish a human from an automated process.
A fresh challenge is generated for each proof. The local Ed25519 private key signs the challenge and the public key verifies the signature.
challenge ←$ {0,1}^256
signature = Ed25519.Sign(sk, challenge)
valid = Ed25519.Verify(pk, challenge, signature)An Ed25519 identity proves control of a key, not human presence. SearchXR therefore reports cryptographic identity proof separately from any claim about whether a user is a person or a bot.
Quantized Task Execution Layer is the browser-side performance path for CPU work that can safely be moved to a Worker.
For input size N and target chunk budget C, the planner uses k = ceil(N / C) and c = ceil(N / k). The worker processes chunks without blocking the main UI.
The core records rate = processedBytes / elapsedSeconds from the actual Worker run rather than showing a fixed benchmark number.
QTEL does not convert browser JavaScript into arbitrary machine-native instructions. Web Worker execution is still governed by the browser's JS engine, scheduler, and hardware.
Runtime Assurance Scanner is a local heuristic review pipeline for code that the browser can legitimately read.
source text ↓ normalization + byte count ↓ pattern checks ├─ dynamic code creation (eval / Function) ├─ cookie / storage access ├─ obfuscated escape density ├─ dynamic network / WebSocket usage └─ script injection surfaces ↓ weighted review score ↓ human-readable findings
Project heuristic score: R = min(100, Σ wᵢ·signalᵢ). A finding is a review signal, not a malware verdict. Cross-origin iframe source remains outside the browser-readable security boundary unless the embedded origin exposes it.
A hidden cross-application runtime layer used by SearchXR navigation and worker-capable data paths. It applies a reversible 4×4 permutation-matrix transform plus byte whitening for chunk normalization and transport preparation. It is not a cryptographic primitive; AES-256-GCM remains the security boundary for protected exports.
For each 16-byte block, bytes are treated as a 4×4 matrix B. The permutation matrix maps P[r,c] = B[(r+c) mod 4,c]. A deterministic whitening byte is then applied per position:
mask(i) = (seed + 31·i + 17·⌊i/16⌋) mod 256 E[i] = P[i] XOR mask(i) D(P[i]) = E[i] XOR mask(i) B[(r+c) mod 4,c] = P[r,c]
The transform is deliberately reversible and cheap. It provides block normalization/mixing and a stable byte-level representation for Worker jobs; it does not provide secrecy.
The browser build uses JavaScript + Web Worker for the live execution path. Native-language kernels below define the same Matrix contract for future WASM, desktop or mobile shells; this single HTML does not falsely claim that all five native toolchains are compiled into the browser.
| Target | Role | Current HTML runtime |
|---|---|---|
| C++ | Native/WASM reference kernel for byte-level Matrix transforms. | Parity contract; browser fast path remains JS Worker. |
| Rust | Memory-safe native/WASM parity implementation. | Parity contract; not compiled into this HTML artifact. |
| Swift | Apple-platform native adaptation of the same block contract. | Parity contract; not executed by the browser page. |
| Kotlin / Java | Android/JVM adaptation of the same Matrix pipeline and chunk contract. | Parity contract; not executed by the browser page. |
// C++ / Rust / Swift / Kotlin / Java all implement the same conceptual ABI: // encode(buffer, length, seed) -> reversible 16-byte Matrix transform. // decode(buffer, length, seed) -> exact inverse. // The browser artifact ships the JS Worker implementation now; // native shells can replace that backend without changing module contracts.
Security Core keeps a local audit trail for SearchXR actions rather than silently sending activity to an external tracker.
Removes SearchXR local storage, SearchXR-named Cache Storage entries, the local security IndexedDB and applicable SearchXR service-worker registrations. It cannot purge the browser's generic HTTP cache or unrelated site data.
Records SearchXR-originated download link metadata and browser appinstalled events. It cannot inspect the user's private browser Downloads directory.
Runtime errors and unhandled promise rejections are summarized locally with time, category and message so the user can see what failed.
The SearchXR Stream module is the live playback surface for the supplied Devi Adi Parashakti episode catalogue. It carries the provided episodes directly inside SearchXR in one continuous vertical stream.
Stream keeps the supplied Devi Adi Parashakti viewing flow inside SearchXR instead of sending the user to a separate page. The module uses the same embedded playback sources supplied in the reference file.
The integration preserves the supplied player behavior: iframe-based playback, full-width layout, 16:9 episode sizing and a portrait-friendly mobile adapter.
The Stream module currently carries the 10 episode sources present in the supplied Devi Adi Parashakti source file.
| # | Episode | Playback source | Mode |
|---|---|---|---|
| 1 | Devi Adi Parashakti Full Episode 1 | देवी आदि पराशक्ति | Dangal Bhakti | https://www.youtube.com/embed/0rKhV0p_MUo | Lead playback |
| 2 | Devi Adi Parashakti Full Episode 2 | https://www.youtube.com/embed/Lgcbj8lOOx4?list=TLGGRgIlffHuH4cyODA5MjAyNg | Continuous stream |
| 3 | Devi Adi Parashakti Full Episode 3 | https://www.youtube.com/embed/B2F0-RrZiBM | Continuous stream |
| 4 | Devi Adi Parashakti Full Episode 4 | https://www.youtube.com/embed/GDh_kipC8mc | Continuous stream |
| 5 | Devi Adi Parashakti Full Episode 5 | https://www.youtube.com/embed/f7NkrdaFSR4 | Continuous stream |
| 6 | Devi Adi Parashakti Full Episode 6 | https://www.youtube.com/embed/kPjJWbWVtCM | Continuous stream |
| 7 | Devi Adi Parashakti Full Episode 7 | https://www.youtube.com/embed/7O3PfNzJ3xI | Continuous stream |
| 8 | Devi Adi Parashakti Full Episode 8 | https://www.youtube.com/embed/BhuqUpbzOqc | Continuous stream |
| 9 | Devi Adi Parashakti Full Episode 9 | https://www.youtube.com/embed/-VYoGKYyof0 | Continuous stream |
| 10 | Devi Adi Parashakti Full Episode 10 | https://www.youtube.com/embed/6iyfc8Jgx4M | Continuous stream |
The source player is optimized for the same desktop/phone behavior requested for SearchXR modules.
The first episode is given a full viewport-height lead frame. Following episodes use a 16:9 viewport-width frame so the entire catalogue can continue vertically.
All episode frames use 16:9 sizing on screens up to 768px wide so the supplied Devi Adi Parashakti player remains fully visible without forcing the page wider than the device.
The first episode is eager-loaded for immediate playback; subsequent episodes use browser lazy loading so the heavy SearchXR host does not request every embedded frame at the same time.
Stream is intentionally simple: a fixed catalogue of supplied embed sources plus UI behavior. No fabricated episode counters, fake live status or synthetic playback data is added.
Production-oriented hardening for the SearchXR browser surface, with a strict separation between controls that this HTML can actually enforce and controls that must be installed at the hosting, edge or backend layer.
These controls are live browser code, not documentation-only claims.
Non-local HTTP visits are redirected to HTTPS before the rest of the app is used. This is a client-side guard only; TLS 1.3 and HSTS still belong on the server/edge.
// implemented
if (location.protocol === 'http:' && !/^(localhost|127\.0\.0\.1)$/i.test(location.hostname)) {
location.replace('https://' + location.host + location.pathname + location.search + location.hash);
}The browser runtime exposes a helper that refuses ws://. The token is sent as the first authenticated message instead of putting a bearer token in the URL.
const ws = await SearchXRSecurity.openWSS('wss://api.example.com/realtime', token);
ws.onmessage = (event) => console.log(event.data);Plaintext stays in browser memory, a shared secret is derived from an ephemeral key agreement, and the message is sealed with authenticated AES-256-GCM. The current build prefers X25519 where the browser exposes it and falls back to P-256 ECDH when it does not.
const alice = await SearchXRSecurity.generateE2EEKeyPair(); const bob = await SearchXRSecurity.generateE2EEKeyPair(); const packet = await SearchXRSecurity.sealE2EE( alice.privateKey, alice.publicKey, bob.publicKey, 'secret' ); const clear = await SearchXRSecurity.openE2EE( bob.privateKey, alice.publicKey, packet );
The runtime can inspect storage key names only and flags names that look like passwords, refresh tokens, API keys or private material. It does not print or export the values.
const audit = SearchXRSecurity.auditBrowserStorage();
// { localStorage: [...key names], sessionStorage: [...] }A static HTML file cannot configure the TLS version negotiated by the server. The real control is a hosting/edge configuration.
Netlify/Vercel rule: serve the site only over HTTPS, and add the HSTS response header on the production host. Do not try to fake this with JavaScript or a meta tag.
Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options: nosniff Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: camera=(), microphone=(), geolocation=(self) Cross-Origin-Opener-Policy: same-origin-allow-popups
The current artifact contains many inline scripts/styles and several legitimate third-party APIs/iframes. A fully strict nonce/hash CSP therefore needs a build/deploy step rather than an unsafe “CSP meta tag” pasted into this document.
Use the supplied report-only policy at the edge first. It reveals blocked origins in browser console reports without breaking the app.
Content-Security-Policy-Report-Only: default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; upgrade-insecure-requests; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; media-src 'self' data: blob: https:; connect-src 'self' https: wss:; worker-src 'self' blob:; frame-src 'self' https://www.youtube.com https://*.youtube-nocookie.com https://www.juicer.io https://*.juicer.io https://www.sociablekit.com https://*.sociablekit.com https://www.snapwidget.com https://*.snapwidget.com;
After moving inline JavaScript and styles to hashed/nonce-backed assets, remove 'unsafe-inline' and whitelist only the exact origins actually required by the production build.
script-src 'self' 'nonce-...'; style-src 'self' 'nonce-...'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self';
PeerJS is pinned to an exact version in the current build. The security layer includes a real SRI calculator, but it does not guess a hash. The integrity value must be generated from the exact bytes that will be served.
const sri = await SearchXRSecurity.sriForUrl(
'https://cdn.jsdelivr.net/npm/peerjs@1.5.4/dist/peerjs.min.js',
'SHA-384'
);
console.log(sri); // e.g. sha384-BASE64_DIGEST
// Then pin that exact verified value in HTML:
<script src="https://cdn.jsdelivr.net/npm/peerjs@1.5.4/dist/peerjs.min.js"
integrity="sha384-BASE64_DIGEST"
crossorigin="anonymous"></script>The current static build has no server login/session system, so JWT rotation and HttpOnly refresh cookies are not pretend-implemented in the browser.
| Control | Current build | Production backend |
|---|---|---|
| Access token | No persisted auth token is created by Infrastructure. | Short-lived access token; keep lifetime limited. |
| Refresh token | Not implemented in static HTML. | HttpOnly + Secure + SameSite cookie; rotate on refresh and revoke reuse. |
| Business rules | Browser UI only. | Validate permissions, pricing, payment and authorization on the server. |
| API key | Browser code cannot make a shipped secret invisible. | Keep provider secrets on a server/edge function, never in public HTML. |
These are edge/network controls. SearchXR can expose a safe client request helper, but it cannot turn a browser into a WAF.
Install rules at Cloudflare/your edge or at the origin gateway. Inspect HTTP requests before the application process receives them.
Rate-limit per IP, identity or API key at the backend/edge. Do not rely on client-side counters because a client can reset them.
Use an upstream network/edge mitigation layer for volumetric attacks. A JavaScript function cannot absorb a network flood before packets reach the host.
Anycast is an infrastructure capability, not a browser feature. A real multi-site anycast service requires globally routable prefixes and BGP announcements from multiple locations; simply placing several VPSs behind one DNS record does not create BGP anycast.
Internet ↓ BGP Anycast prefix ↓ PoP A ── Go/Rust edge ── origin shard A PoP B ── Go/Rust edge ── origin shard B PoP C ── Go/Rust edge ── origin shard C
The browser only sees the public HTTPS hostname. Route control, IP space/ASN, PoP networking, health checks and DDoS filtering live outside this HTML artifact.
These are valid production architecture options, but they are not falsely embedded into a browser page.
| Requested layer | What a real implementation means | Status in this file |
|---|---|---|
| Rust / Go core | Server-side service or gateway compiled and deployed on your infrastructure. | Architecture contract only. |
| Actor / event loop | Server process with async I/O, bounded worker pools and backpressure. | Not a browser kernel. |
| Raft cluster | Multiple server nodes with durable logs, quorum and leader election. | Not a single-HTML feature. |
| Zero-copy | Reduce buffer copies in native/server pipelines where the platform and protocol allow it. | Browser JS cannot promise arbitrary zero-copy memory sharing. |
| Memory scrubbing | Best-effort zeroing of mutable native buffers; JavaScript strings and garbage-collected objects are not guaranteed to be securely erased. | Documented boundary. |
Do not replace TLS with a custom handshake. Use TLS 1.3 for transport security and standard, audited libraries when the application layer needs additional end-to-end encryption.
This single HTML file contains the browser runtime plus the exact Netlify/Vercel header configuration below as copy-ready deployment references. Headers still have to be applied by the host; HTML cannot install response headers by itself.
1. HTTPS only 2. HSTS response header 3. CSP Report-Only → inspect → strict CSP 4. Pin third-party assets and add verified SRI 5. No secrets in browser storage 6. HttpOnly/Secure/SameSite auth cookies on backend 7. Short-lived access tokens + refresh rotation on backend 8. WAF + edge rate limiting 9. Server-side authorization/business rules 10. Monitor errors and rotate compromised credentials quickly
Copy this block into a root-level _headers file when deploying the same HTML on Netlify.
/* Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options: nosniff Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: camera=(), microphone=(), geolocation=(self) Cross-Origin-Opener-Policy: same-origin-allow-popups Content-Security-Policy-Report-Only: default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; upgrade-insecure-requests; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; media-src 'self' data: blob: https:; connect-src 'self' https: wss:; worker-src 'self' blob:; frame-src 'self' https://www.youtube.com https://*.youtube-nocookie.com https://www.juicer.io https://*.juicer.io https://www.sociablekit.com https://*.sociablekit.com https://www.snapwidget.com https://*.snapwidget.com */
Copy this object into vercel.json when deploying the same HTML on Vercel.
{
"headers": [
{
"source": "/(.*)",
"headers": [
{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},
{"key":"X-Content-Type-Options","value":"nosniff"},
{"key":"Referrer-Policy","value":"strict-origin-when-cross-origin"},
{"key":"Permissions-Policy","value":"camera=(), microphone=(), geolocation=(self)"},
{"key":"Cross-Origin-Opener-Policy","value":"same-origin-allow-popups"},
{"key":"Content-Security-Policy-Report-Only","value":"default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'; upgrade-insecure-requests; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; media-src 'self' data: blob: https:; connect-src 'self' https: wss:; worker-src 'self' blob:; frame-src 'self' https://www.youtube.com https://*.youtube-nocookie.com https://www.juicer.io https://*.juicer.io https://www.sociablekit.com https://*.sociablekit.com https://www.snapwidget.com https://*.snapwidget.com"}
]
}
]
}This page defines the mandatory operating rules for X-Star Collection, SearchXR modules, bundled application systems, contributors and future integrations. These rules are designed for a high-trust, security-first, performance-aware browser ecosystem.
Policy notice: These are product and engineering rules for the collection; they are not a substitute for legal advice, provider agreements or jurisdiction-specific compliance requirements.
Use of this collection and its bundled tools must remain lawful, respectful of user privacy, and consistent with upstream provider terms.
The following rules are mandatory for new code and should be treated as release blockers when violated.
Never hard-code API keys, private keys, refresh tokens, session cookies or provider credentials in source. Store temporary browser credentials in memory/session scope only when a direct browser call is intentionally supported; prefer a backend/edge proxy for production secrets.
Prefer HTTPS and WSS. Validate target URLs before requests. Use an explicit host allowlist for sensitive integrations. Every request must have a timeout, cancellation path and bounded retry behavior.
Never insert untrusted provider text as executable HTML. Prefer textContent, DOM APIs and safe templates. When rich HTML is unavoidable, sanitize against an explicit allowlist and remove scripts, event-handler attributes and dangerous URLs.
Third-party frames must use an explicit allowlist and the narrowest practical permissions. Do not treat an iframe boundary as a security authorization boundary for secrets or privileged operations.
Minimize collected data. Do not store provider payloads, access tokens or user-sensitive information longer than required. Never put secrets into analytics, event logs, URLs or error messages.
Unknown states must fail closed. Do not silently fall back to unsafe protocols, arbitrary origins, unrestricted redirects, uncontrolled retries or privileged actions.
Every new module should follow these rules before it is accepted into the collection.
| Area | Required rule | Release expectation |
|---|---|---|
| JavaScript | Use strict mode; prefer small pure functions; avoid eval, new Function and dynamic script injection. | Static review + runtime smoke test |
| DOM | Use textContent and DOM methods for untrusted values; sanitize any rich provider-controlled HTML. | No known DOM-XSS sink from external input |
| Networking | Use AbortController, request deadlines, bounded response sizes, concurrency limits and backoff. | No hanging request path |
| Dependencies | Pin versions; avoid floating CDN versions; use SRI for critical external scripts where practical. | Version + integrity recorded |
| Frames | Allowlist origins; apply sandbox/permission restrictions when compatible with the embedded application. | Origin reviewed |
| Storage | Namespace storage keys; never persist secrets unless the threat model explicitly allows it. | Storage audit passes |
| Performance | Lazy-load heavy assets, virtualize large lists where possible, cancel stale searches, and keep CPU-heavy transforms off the main thread. | Mobile degradation documented |
| Observability | Log structured, non-sensitive events; never log tokens or private payloads. | Errors actionable and redacted |
The following browser-side policy engine is included to give future modules common validation, request deadlines, response limits, host checks, rate limiting, safe URL handling and redacted audit events. It is a reusable enforcement API; modules should call it instead of duplicating ad-hoc security code.
await XStarPolicy.fetch('https://api.example.com/data', {
timeoutMs: 15000,
maxBytes: 2 * 1024 * 1024,
retry: 2
});
XStarPolicy.allowHost('api.example.com');const url = XStarPolicy.safeUrl(userInput, {
protocols: ['https:'],
hosts: ['example.com', '*.examplecdn.com']
});
XStarPolicy.open(url, '_blank');Per-action budgets prevent accidental request floods inside supported modules.
Response bodies are bounded where the browser can enforce a safe byte budget.
Security events are timestamped and redacted before session-scoped diagnostic storage.
A module is not ready for collection release until all applicable gates pass.
SearchXR is primarily designed for desktop and PC-class processors. The full application combines multiple browser modules, large bundled assets, image and media rendering, embedded environments, Web Workers and live network requests. On lower-powered phones, the same workload can cause slower rendering, higher memory pressure, heat or visible lag.
The Collection contains several independently functional browser environments. When multiple heavy surfaces are active, browser scheduling, memory limits and thermal constraints become the main performance boundary.
Phone support is responsive, not a guarantee of desktop-level performance. On entry-level or thermally constrained phones, users may see slower scrolling, delayed module startup, dropped frames or delayed network results. This is an expected resource boundary of the full application.
For the smoothest experience, use SearchXR on a modern desktop or laptop and avoid opening several media-heavy modules at the same time. On phones, prefer the lighter Search, Music and Image surfaces first and open heavier embedded modules only when needed.
A dedicated synthesis layer for high-quality summaries, research, comparisons and study briefs. It can ask multiple specialist models, use live web search, then have a separate synthesizer produce one clean answer.
Connect the Gemini and Studio modules directly from this browser. The keys are stored only in the current browser session and are not embedded into the SearchXR HTML source.
API input boxes are hidden. Gemini and Studio now read the session credentials directly whenever they make requests.
Uses a browser Web Worker to move hash, chunk planning and scan work off the UI thread.
Scans same-origin inline JavaScript and configured code text for high-risk patterns. Cross-origin iframe source is not silently inspected because browser security boundaries prevent that.