tbrockman
tbrockman
PD🧩 Plasmo Developers
Created by vernak2539 on 9/17/2024 in #👟framework
Publishing to Multiple Markets using @PlasmoHQ/bpp github action
No issues with prune, but I think that's likely because the BPP plugin doesn't publish it on Firefox with it marked as containing compiled/obfuscated source code and they don't seem to check 👀 I've had problems with another extension that I've submitted manually though, but got it accepted after submitting the build using the GitHub workflow and then including the source code with the submissions afterwards
19 replies
PD🧩 Plasmo Developers
Created by vernak2539 on 9/17/2024 in #👟framework
Publishing to Multiple Markets using @PlasmoHQ/bpp github action
🤔 that's a pretty interesting thing for them to call-out without mentioning that it only applies in the case of content scripts that are injected into the MAIN world
The interesting part is that error boundaries don't really allow for custom clients (if I understood it correctly), so I had to create my own.
seems to be the case from what I can see in their source code, that's somewhat surprising that you wouldn't just be able to do something like client.withScope( /** your code which may throw errors **/) and have it handled automatically. or allow you to pass a client to wrap https://github.com/getsentry/sentry-javascript/blob/e31fd637c70b49eb1e08ac29e15b9b9d6e458730/packages/browser/src/helpers.ts#L43
19 replies
PD🧩 Plasmo Developers
Created by vernak2539 on 9/17/2024 in #👟framework
Publishing to Multiple Markets using @PlasmoHQ/bpp github action
if you do automate it, it looks like it would help flesh out the current with-sentry example if you're interested, or you could use it as a tech blog tutorial for SEO/funneling people to your extension 😛
19 replies
PD🧩 Plasmo Developers
Created by vernak2539 on 9/17/2024 in #👟framework
Publishing to Multiple Markets using @PlasmoHQ/bpp github action
like, more than one build for each target? are the source maps produced using https://docs.plasmo.com/framework/workflows/build#with-source-maps not compatible with sentry? not too familiar with sentry or maybe misunderstood
19 replies
PD🧩 Plasmo Developers
Created by vernak2539 on 9/17/2024 in #👟framework
Publishing to Multiple Markets using @PlasmoHQ/bpp github action
could this be automated in the GitHub workflow?
19 replies
PD🧩 Plasmo Developers
Created by vernak2539 on 9/17/2024 in #👟framework
Publishing to Multiple Markets using @PlasmoHQ/bpp github action
probably best bet is MDN compatibility docs to check browser API support, looking through Plasmo source code for browser-specific sections (ex: https://github.com/PlasmoHQ/plasmo/blob/62e4c396bbbfad10b6e44a8f7a7e1966f2f56797/core/parcel-transformer-manifest/src/handle-sandboxes.ts#L10) , and trial and error.
19 replies
PD🧩 Plasmo Developers
Created by vernak2539 on 9/17/2024 in #👟framework
Publishing to Multiple Markets using @PlasmoHQ/bpp github action
AFAIK minus different browser support for certain features that Plasmo provides, code should be the same across builds minus the effects of replacing any related environment variables (like process.env.PLASMO_BROWSER) So if you don't actually use any target-specific functionality or features which aren't supported across all your targets, you could probably get away with reusing the same build, but it would probably be safer to just produce a build for each platform (since you'll likely deal with something being incompatible across browsers at some point). Here are some example GitHub workflows (from one of my extensions) for how you can go about doing that: * Building and uploading artifacts to GitHub - build commands * Publishing multiple artifacts from GitHub using BPP
19 replies
PD🧩 Plasmo Developers
Created by asmboy. on 11/10/2023 in #👟framework
Injecting Content Script UI on Extension Click (and disabling popup)
I don't think Plasmo supports dynamic UI injection natively, so if you really want to do something like this you'd probably have to cobble it together yourself, which would involve something like compiling the necessary javascript into a self contained serializable function (so you can pass it to func, I wrote this parcel plugin when I had to do something similar), and then injecting all the necessary CSS into the page
5 replies
PD🧩 Plasmo Developers
Created by asmboy. on 11/10/2023 in #👟framework
Injecting Content Script UI on Extension Click (and disabling popup)
Does the UI need to be injected dynamically? Could you register a static UI which then only renders after the action is clicked?
5 replies
LTLeaning Technologies
Created by Eban on 1/29/2024 in #support
Any plan on adding internet access without Tailscale?
Not possible at all or would require customization that's not really possible from me currently? Overall this is an area of CS that I'm pretty unfamiliar with so forgive my ignorance in advance 😅 If it's possible to detect that the exit node is improperly configured, that would be good too! But I was mainly just imagining that it might be more intuitive for someone interacting with WebVM for the first time (who wouldn't be aware of the network limitations, or be familiar with the requirement to login to Tailscale, or--if applicable here--that previous Tailscale auth has expired) to receive a terminal prompt to login to Tailscale. I suppose I was wondering whether there was any sort of exposed interface to hook into syscalls to facilitate that (if it even makes sense).
15 replies
LTLeaning Technologies
Created by Eban on 1/29/2024 in #support
Any plan on adding internet access without Tailscale?
Just started poking around with this (super cool! much more accessible than JSLinux 😬 ), is it currently possible to provide user feedback via stderr when Tailscale networking isn't connected? Rather than waiting for a timeout on something like curl https://canihazip.com
15 replies
PD🧩 Plasmo Developers
Created by tbrockman on 1/14/2024 in #👾extension
How can I listen for messages from the extension popup in ALL (there could be many) active contents?
For anyone curious that ends up finding this question I dug into it a bit. Scripts injected into the main world do have a limited chrome.runtime API-subset, which makes sense given that they'll be injected in the same context as other Javascript. You can still use chrome.runtime.connect('extensionId') from your content script in order to establish a connection (create a port) to your extension background worker if you allow it to be externally connectable (https://developer.chrome.com/docs/extensions/reference/manifest/externally-connectable), i.e setting something like this in manifest.json:
"externally_connectable": {
"matches": [
"https://*/*"
]
},
"externally_connectable": {
"matches": [
"https://*/*"
]
},
This does mean, however, that you'll be allowing any code running on those webpages to connect to your extension, so you should consider the security implications of who you're allowing to send messages, and what data you would be sharing with them. In your background script, you can then have something like the following, allowing you to communicate with your injected content scripts:
const connected = (p) => {
console.debug('connected', p)

p.onMessage.addListener((m) => {
console.log("In background script, received message from content script");
console.log(m.greeting);
});

setTimeout(() => {
p.postMessage({ greeting: "hi there content script!" });
}, 2000)
}
chrome.runtime.onConnectExternal.addListener(connected);
const connected = (p) => {
console.debug('connected', p)

p.onMessage.addListener((m) => {
console.log("In background script, received message from content script");
console.log(m.greeting);
});

setTimeout(() => {
p.postMessage({ greeting: "hi there content script!" });
}, 2000)
}
chrome.runtime.onConnectExternal.addListener(connected);
4 replies
PD🧩 Plasmo Developers
Created by tbrockman on 5/13/2023 in #👟framework
Is it possible to specify per browser permissions?
Didn't realize that requesting an invalid permission just resulted in a warning (not an error), I guess if it doesn't break anything at that point that this is fine 🤷‍♂️ thanks @louis!
7 replies
PD🧩 Plasmo Developers
Created by Karstodes on 4/20/2023 in #👟framework
CSUI Styling React components without getStyle() on each component
If it isn't built by the time I have time to look into it I will try my best 😛
4 replies
PD🧩 Plasmo Developers
Created by tbrockman on 4/23/2023 in #👟framework
MUI Select component attachment point in CSUI?
Ah, okay, figured it out, you need to set the container property so that the container doesn't use the default (document.body), I just used a ref to the select element itself. So doing something like:
const [current, setCurrent] = useState<HTMLElement>(null);
const ref = useRef<HTMLElement>();

useLayoutEffect(() => {
setCurrent(ref.current)
})

return (
<Select ... ref={ref}
MenuProps={{
container: current
}}>
<MenuItem> ... </MenuItem>
</Select>
)
const [current, setCurrent] = useState<HTMLElement>(null);
const ref = useRef<HTMLElement>();

useLayoutEffect(() => {
setCurrent(ref.current)
})

return (
<Select ... ref={ref}
MenuProps={{
container: current
}}>
<MenuItem> ... </MenuItem>
</Select>
)
7 replies
PD🧩 Plasmo Developers
Created by tbrockman on 4/23/2023 in #👟framework
MUI Select component attachment point in CSUI?
Hmm, doesn't seem to matter if I set anchorEl manually or not, and the earlier issues were just related to not querying the Shadow DOM. Don't really know how to fix this.
7 replies
PD🧩 Plasmo Developers
Created by tbrockman on 4/23/2023 in #👟framework
MUI Select component attachment point in CSUI?
Seems to be the same issue as https://discord.com/channels/946290204443025438/1076545455246286898/1076545455246286898 but not sure how to fix the anchor if document queries aren't returning any elements
7 replies
PD🧩 Plasmo Developers
Created by Karstodes on 4/20/2023 in #👟framework
CSUI Styling React components without getStyle() on each component
I also just ran into this yesterday when migrating some components and would appreciate the same 👀
4 replies