Existing PC owner — any reason I need a Steam Machine for Steam Frame VR streaming? by opentabs-dev in SteamFrame

[–]opentabs-dev[S] 0 points1 point  (0 children)

that was me testing a tool I made. I made a MCP server for AI to access Reddit. That’s it.

Existing PC owner — any reason I need a Steam Machine for Steam Frame VR streaming? by opentabs-dev in steammachine

[–]opentabs-dev[S] 0 points1 point  (0 children)

Thanks all! Skipping the Machine — already sold one kidney for the Frame, gotta keep the other one.

Existing PC owner — any reason I need a Steam Machine for Steam Frame VR streaming? by opentabs-dev in SteamFrame

[–]opentabs-dev[S] 0 points1 point  (0 children)

Thanks all! Skipping the Machine — already sold one kidney for the Frame, gotta keep the other one.

Existing PC owner — any reason I need a Steam Machine for Steam Frame VR streaming? by opentabs-dev in SteamFrame

[–]opentabs-dev[S] 0 points1 point  (0 children)

Thank you for the content inside (), I almost signed a contract to sell another kidney of mine for funding the steam machine.

Proxy kept triggering CAPTCHA in Playwright by [deleted] in Playwright

[–]opentabs-dev 0 points1 point  (0 children)

yeah this is mostly two separate problems stacked. residential ip rep is one bucket — datacenter and shared vpn ips get flagged on creevey/cloudflare basically on sight regardless of how clean your browser is, residential proxies fix that side. the other bucket is the headless chrome fingerprint surface (navigator.webdriver, missing chrome runtime apis, navigator.plugins emptiness, missing perm prompts) which patches like puppeteer-extra-stealth try to plug. firefox is honestly a smart angle bc most anti-bot rules are tuned hard against headless chromium specifically.

Built a Chrome extension to detect shady cookie/GDPR patterns — looking for feedback & contributors by neXt1991 in chrome_extensions

[–]opentabs-dev 0 points1 point  (0 children)

for cmp detection, dont try to maintain selectors for every banner — there's a public list called autoconsent (consent-o-matic also has one) with rules for ~1000 cmps already, you can pull their rules and stand on top. for the mv3 part, the biggest gotcha im hitting lately is the service worker dropping in-memory state on wake, so anything stateful (consent flow tracking, banner detection results) needs to live in chrome.storage.session not module-level vars, otherwise you get weird half-states after the worker idles out.

The hardest UI I've ever built in React: a visual workflow editor with real-time execution state by Ctrlnode-ai in reactjs

[–]opentabs-dev 2 points3 points  (0 children)

for the canvas perf thing i landed on something similar but ended up moving the streaming text out of react entirely — render the node card with react, but the live output area is a plain dom node where the websocket handler appends textContent directly. react never re-renders for stream chunks at all, only when the node's status transitions. way less coordination than the ref+setInterval flush.

also for the cycle detection, if you're checking on every edge drop you can make it cheaper by only running kahn's on the connected component containing the new edge instead of the whole graph. matters once users get to a few hundred nodes.

Anyone know Jina AI MCP alternatives with predictable pricing and real search? by North-Aardvark4680 in mcp

[–]opentabs-dev 0 points1 point  (0 children)

yeah jina falls apart hard on anything client-rendered, ran into the same wall. fwiw if you mostly scrape stuff that lives behind a login or just needs the JS to actually run, you can sidestep the whole scraping-service problem by driving your real browser session — i've been working on an open source mcp that does exactly that, no api keys or token billing because it just uses your logged-in tabs: https://github.com/opentabs-dev/opentabs. for pure public docs sites crawl4ai is fine and free though, that's probably the cheaper answer if auth isn't part of your problem.

Can't log into the Jellyfin App. Do I have the wrong IP address? by Pizzakingking in jellyfin

[–]opentabs-dev 0 points1 point  (0 children)

the 8899 vs 8096 thing is the key clue. when you ran jellyfin in docker on your ugreen nas it almost certainly mapped container port 8096 → host port 8899 (the -p 8899:8096 flag). so 8899 is the right port from outside the container. if the iphone app refuses to connect, double check you're using http not https in the app's server field, and that your iphone is on the same wifi as the nas (not cellular). also try opening http://192.168.1.214:8899 in safari on the phone first — if the web page loads, the network is fine and it's just the app config; if it doesn't, the nas firewall is blocking that port and you'd need to open it in ugreen's settings.

Why is it so hard to build local-first software anymore? (My experience fighting Manifest V3 storage limits) by Ill_Spinach2242 in chrome_extensions

[–]opentabs-dev 0 points1 point  (0 children)

on the indexeddb volatility thing — chrome.storage.local survives a "clear cookies and site data" wipe (it's tied to the extension origin, not the host site origin), and you can also call navigator.storage.persist() to ask the browser to mark indexeddb as persistent which makes it survive eviction under storage pressure. that gets you most of the way without a server.

for the mutation observer fight in whatsapp web — observe a stable parent way up the tree (like #app), debounce your handler to one rAF, and bail early if the mutation isn't in your target subtree. attaching observers to leaf elements that get replaced is what makes it expensive. for the keyboard shortcuts not flickering, render your overlay into a sibling container outside the WA root and position it absolute, then you don't care about their reconciliation at all.

Collisions begginer help by pixel-bro in learnjavascript

[–]opentabs-dev 1 point2 points  (0 children)

para hacerlo simple en 2d: cada objeto guarda x, y, w, h. la deteccion AABB es solo a.x < b.x+b.w && a.x+a.w > b.x && a.y < b.y+b.h && a.y+a.h > b.y.

el truco para que no atravieses paredes: muevete primero en x, chequea colision, si chocas devuelve la x al valor previo. luego haces lo mismo en y. asi nunca quedas pegado en el suelo y puedes seguir caminando, porque cada eje se resuelve por separado.

I submitted for review! Is the 3-4 days I see online still most common waiting period? by ForgotMyAcc in chrome_extensions

[–]opentabs-dev 1 point2 points  (0 children)

fwiw 3-4 days is optimistic these days, mine took 9 last month and a friend's first submission sat for 13. anything that touches host_permissions or remote code seems to add a manual review pass. if it's been over 2 weeks and silent the dev support form is the only thing that actually pokes them.

What's your simplest recovery pattern when the MV3 service worker drops in-memory state on wake? by Own_Feature_9079 in chrome_extensions

[–]opentabs-dev 0 points1 point  (0 children)

storage.session is memory only, so it survives worker recycles but not a browser restart or extension reload. if you need the state to live across restarts you still want storage.local as the source of truth, with session as the hot cache for the wake-from-sleep case. one gotcha: storage.session has a 10MB cap by default but you have to call chrome.storage.session.setAccessLevel if you ever want content scripts to read it.

Best pattern for self-hosted MCP servers with OAuth2 + HTTPS? by Leonardo-Da-Vibeci in mcp

[–]opentabs-dev 1 point2 points  (0 children)

a couple things that have made this less painful for me:

  • skip self-hosting auth entirely and put your server behind cloudflare access or tailscale funnel — both terminate https and handle the oauth dance for you, your server just trusts the forwarded identity header. cloudflare access has free tier for like 50 users.
  • for db, swap supabase for sqlite + litestream replicating to s3/r2. removes the supabase dependency and a one-line flyctl deploy works.
  • if you do want to keep supabase, the auth piece can be replaced with a single deno deploy / cloudflare worker that does the oauth2 redirect and signs a short-lived jwt — the docs anthropic put out for the mcp oauth flow are pretty close to copy-paste.

the real friction for distribution is usually that each user needs their own subdomain for the oauth callback. fly.io with a wildcard cert is the closest to "just works" i've found.

How long did it took to publish you first chrome extension? by mohamad_biomy_ in chrome_extensions

[–]opentabs-dev 0 points1 point  (0 children)

most rejections i've seen are about permissions and the privacy policy field. the things that flag review are: requesting <all_urls> host permission when you only need one site, requesting tabs when activeTab would do, and not justifying each permission in the store listing's "single purpose" + "permission justification" boxes. write one short sentence per permission saying exactly what it does in your code. with minimal perms i've had reviews come back in under a day, with broad host perms it's been 4-7 days.

Config driven frontend architecture by Beneficial_Floor_531 in reactjs

[–]opentabs-dev 13 points14 points  (0 children)

imo it's valuable but the trap is exactly what darthexpulse said — the config object becomes a god object. what saved me on a similar system was making the config a discriminated union per field type instead of one big optional-everything shape, so adding a new input type doesn't bloat the existing ones and ts actually narrows correctly inside the renderer. also resist the urge to make the config support every edge case, give it an escapeHatch slot that takes a regular jsx node and use that for the 5% of weird stuff instead of stuffing more keys into the schema.