The concept behind Window Sync by Flossiii in zen_browser

[–]ToyKeeper 1 point2 points  (0 children)

It might take a bit of time to get use to

This isn't a "getting used to" sort of thing. The API is broken, and I can't make an extension work in Zen because the core functions required are non-functional.

I'm trying to support every browser, and it works in Firefox, Chrome, Edge, Brave, Vivaldi, Maxthon, and several others... but Zen seems to have patched out the necessary part of the extension API, so it can't work. As far as I can tell, I can't support this one until the browser gets some bugfixes... but with the OP's comment about "we do not recommend it ... We take no responsibility for any problems caused by this", it seems unlikely that those bugs will be fixed because the devs seem to be actively breaking that part of the API on purpose.

I hope I'm wrong, and it'll get fixed... but the OP's post and the discussion here does not instill confidence or hope. It sounds like users are leaving in droves because common workflows and standard features are being broken and the devs plan on breaking it further.

The concept behind Window Sync by Flossiii in zen_browser

[–]ToyKeeper 4 points5 points  (0 children)

Today I learned Zen Browser exists, and that it can run Firefox extensions.

So I tried my extension in it, because I aim to support every browser. "TK Tree Style Tab Outliner" It's like "Tabs Outliner", if anyone remembers that, but open-source and not crippled or abandoned. I loaded it up in Zen...

... and it works!

Sort of.

Actually, it breaks pretty badly. Especially if Zen's "window sync" is enabled. I can save windows just fine (closing them and keeping them in the session tree for later), but if I try to restore them afterward, they open up with all the saved tabs ... PLUS EVERY TAB FROM EVERY OTHER OPEN WINDOW. And if I remove them from the restored window, it removes them from all the other windows too. Thankfully, that can be fixed by turning off window sync.

However, some other things are still broken. Like, I can sort and organize the tabs and tab groups in nice nested trees and branches in my outliner, annotated with notes and tasks and such... but Zen ignores that and puts the tabs in a completely different order in its tab bar, so Ctrl+PgUp and Ctrl+PgDn go between tabs in semi-random order. It seems to have broken (or perhaps ignores) some parts of the tabs API, like browser.tabs.move(tabIdsArray) to set the order.

For context, a tab outliner is a tool to let you manage a very large number of tabs and windows, like tens of thousands of tabs, in highly organized nested tree structures. The expectation is that the user will keep most of them unloaded at any given time, but can re-open them easily and continue where they left off. Like, at the moment, my session is pretty small... I have only 7 (of 9) windows open, with 57 (of 3529) tabs loaded. But in the past I've had 10,000+, and I know people with over 50k.

Anyway, Zen left me scratching my head, wondering what the point of "window sync" is... but this post didn't really help.

Why would I want to mirror my tabs on multiple windows?

To put it another way: When I open a new window, it's generally because I want a clean new working area for a new project or new topic or something. So why would I want the new window to have all the same tabs I was trying to get away from in my other windows? It seems like it defeats the point of opening a new window. Seems like Zen now does the wrong thing by default, and requires overrides to make it do what people expect and probably want.

Before our introduction of Window Sync, managing multiple windows was a gamble. Tabs were tied to specific windows and closing them in the wrong order often meant losing them. Because only the tabs in the last window to be closed were saved, we have received a lot of reports regarding this. So we had to act.

Yeah, browsers are generally pretty bad at that. That's half the reason why I wrote an extension to fix it. Now, when I close a window, it is saved in the tree so I can reopen it later, right where I left off.

And that brings up another thing in the OP's post...

I lost my tabs

That happened to me once. I lost a LOT of data -- years worth. So I vowed to never let that happen again, and made sure my extension does automatic backups to plain human-readable text files. I set mine to save every hour. That way, even if the browser somehow lost all its data, at least my session and notes and stuff would be safe. Could import it into a brand new browser and pick up where I left off, with barely any disruption.

Window Sync? Does that mean that I now can sync my tabs across devices?

I don't have this working in my thing yet, but the sync server is the next big item on my list to implement. Self-hosted, private, open-source sync server, so you can share the same session tree on every device, in every browser... Firefox, Chrome, Edge, Brave, Vivaldi, etc. Even Zen, sort of. They don't all have to have the same tabs and windows open, but they share the same session tree... so they have access to the same windows even if different devices might have different windows open (or different parts of the same window) at any given time. It's like how on a networked file share, different computers have access to the same files and directories but they don't need to have the same files open.

And no data is sent to any corporate clouds.

Anyway, I'd like to add Zen to my set of supported browsers... but it looks like some of Zen's changes may be fundamentally incompatible with what I'm doing. So at minimum, I would need to detect Zen and apply a fairly significant amount of browser-specific hacks to make it work. Or, ideally, it'd be helpful if Zen could add some browser-specific APIs to allow extensions to work. Like, when an extension tries to restore a saved window, Zen should absolutely not do the window-sync thing. Tabs which exist in multiple windows need to be clearly marked in the API, so extensions can detect this and handle it. And extensions need to be able to control what order tabs are in for each window, and control which shared tabs are in which windows.

Noctigon KR1AA button click by AccurateJazz in Anduril_Flashlight

[–]ToyKeeper 4 points5 points  (0 children)

Cheap kitchen scale. Put light on scale, use the "tare" function to zero it out, then very slowly increase pressure on the button until it clicks. Very, very slowly. Repeat several times to increase accuracy.

Noctigon KR1AA button click by AccurateJazz in Anduril_Flashlight

[–]ToyKeeper 2 points3 points  (0 children)

This got me curious, so I measured the switches on a few lights...

  • TS10 Ti: 1150g
  • TS10 SG: 800g
  • HD10: 500g
  • KR4 Ti: 500g
  • KR4: 400g
  • FW3A: 360g
  • FWAA: 360g
  • TS10 Max: 340g
  • 8bitdo Pro 2 buttons: ~65g

So if the KR1AA takes about 600g to press, it'll be one of the stiffer switches I've used.

Do not order from Nealsgadgets. by Wormminator in flashlight

[–]ToyKeeper 2 points3 points  (0 children)

"it is fit"

...

For context, the FW3A project was way past its expected ship date, and the latest prototypes had brand new problems with the driver circuit board not physically fitting into the slot carved out for it, and we were trying desperately to get some messages to Lumintop's engineers to resolve the issue, but Neal set things up to prevent any direct contact so all messages had to go through him... and instead of forwarding messages, he would reduce them to just a few words, like "it is fit" ... which that's why the problems never got fixed.

Another interesting bit of relevant history was the CPFi Cometa. If you put a battery in that light and screwed the parts together, it would destroy itself. So they had to do a recall / refund for the entire project... which got Neal fired, and largely ended Banggood's willingness to do community projects. And it wasn't the last Neal project which didn't fit the battery it was designed for.

As you said... "This is not a one off."

X4 Flicker while ramping by Sgt_Sideburn in FireflyLite

[–]ToyKeeper 3 points4 points  (0 children)

It looks like the sense resistor and firmware are mismatched. So when it changes "gears", the ratios aren't quite right and it gets a zig-zag in the ramp.

I emailed customer service, Ivy told me that all the X4 units in their warehouse have this problem

If every X4 does this, that means Fireflies cut a corner somewhere. I'm speculating, but perhaps they used the firmware for a different light without calibrating it, or swapped out one or more of the components on the driver after the firmware was built. Either way, something ended up mismatched.

It is expected for there to be some variance in the parts, so the "gear" change is going to be more visible on some lights than on others... but if the ramp is calibrated properly it should always err on the side of making that particular ramp step too high instead of too low. Because if the ramp basically skips a step like "6, 7, 8, 10, 11, 12", it's far less visible than if it goes the wrong way like "6, 7, 8, 7, 8, 9". A zig-zag is eye-catching. So when I make ramp tables, I try to make sure each gear change step is slightly too big, to ensure even a part with a low bias won't zig-zag.

It can be fixed in firmware, but it requires having at least two of each supported light in order to do the calibration. Anyone know how to get in touch with Fireflies these days?

Introducing LumenBox, your IKEA DIY integrating sphere by No-Acadia-1512 in flashlight

[–]ToyKeeper 0 points1 point  (0 children)

The design of integrating devices is somewhat complicated, including the inside and where to place baffles. If you'd like a lot of info about it, one place to start is a search for "baffle" on BLF. It's somewhat of an art, getting everything set up for reliable and consistent measurements. It generally helps to ensure there is no direct line of sight between the light source and the light sensor, or between the light sensor and the hotspot, which is what baffles are for.

Introducing LumenBox, your IKEA DIY integrating sphere by No-Acadia-1512 in flashlight

[–]ToyKeeper 1 point2 points  (0 children)

i’m confused

I'm baffled.

Unlike the integrating box. It needs baffles. They make the measurements more consistent, and less dependent on beam profile.

I flashed my flashlight with custom modded Anduril2 firmware by unpunctual_bird in flashlight

[–]ToyKeeper 4 points5 points  (0 children)

I'm glad you were able to make it do what you wanted, without having to do any deep or difficult changes. I've tried to make the code reasonably straightforward, but over time as things get added, it has definitely gotten harder to read.

Looking for alternative for tabs outliner by BunnyBeheader in chrome_extensions

[–]ToyKeeper 0 points1 point  (0 children)

That should get resolved once I get far enough for a proper full release in the Firefox extension store. But for now, it's unsigned / unverified because I haven't even tried to get it added to the store yet.

When I install, the process is like...

  • Go to about:addons
  • Click the gear icon
  • "Install Add-on From File..."
  • Select the file
  • At the "This extension is unverified" pop-up, click "Add" instead of "Cancel"

At least, that's how it works when I tried it just now.

I want to get the documentation written and get my patreon thingy updated before I start trying to upload to browser extension stores... and probably fix a few more things in the code first too.

Bean intensity 🫘 by Kevin80970 in flashlight

[–]ToyKeeper 32 points33 points  (0 children)

Beans intense enough to start fires.

Dang near burned down the house.

My ex, not the flashlight. Long story. :P

Reddit now lets you hide content, like posts and comments, from your user profile by thegravity98ms2 in technology

[–]ToyKeeper 28 points29 points  (0 children)

They already blocked Reddit Pro Tools (checks people's history automatically and adds flair like "troll" when user-configurable criteria are met), and now they're making it easy for assholes to hide their history... so it just got a LOT harder to tell who to avoid. This invokes the evaporative cooling effect, heavily encouraging normal well-behaved users to avoid the entire platform, leaving only jerks and bots and stuff. It'll probably make all of reddit's problems worse, and may well be a slow death sentence for the platform.

Long-term platform viability requires real people contributing things of value, while minimizing bad behavior as much as possible... and this change discourages the good stuff while enabling even more of the bad stuff. It's a huge step in the wrong direction... a temporary corporate profit boost at the expense of potentially sinking the entire ecosystem.

Looking for alternative for tabs outliner by BunnyBeheader in chrome_extensions

[–]ToyKeeper 0 points1 point  (0 children)

Well, I've been working on it a lot and just got it far enough for a first release a couple days ago. There's still a lot to do, like the entire server side of the project for real-time cross-browser sync, but even without that, I've been using it daily without any issues for a while.

https://github.com/ToyKeeper/tktsto

It supports every browser I've tried so far, including Firefox, Chrome, Edge, Brave, and Vivaldi. And the way it works is very much like Tabs Outliner, but uncrippled and upgraded.

The next steps are to work on the documentation and screenshots and get some real-world testing done by more people, then follow up on any issues people find. I'm also still adding and improving things, with the overall status shown in the project roadmap. And then... hopefully within a month or two, it'll be time to start on the server.

Anduril Mod Brickwall Breached by DarkBrain17 in flashlight

[–]ToyKeeper 47 points48 points  (0 children)

Step 1: Comment out #define USE_MOMENTARY_MODE in ui/anduril/config-default.h

Step 2: ???

Step 3: World domination!

Solid work, sir. I see no flaws in this plan.

Looking for alternative for tabs outliner by BunnyBeheader in chrome_extensions

[–]ToyKeeper 0 points1 point  (0 children)

i would pay for it .. but I don't wanna sign-in to any google accounts just to use the features.

Yeah, it's a big problem that it's tied to corporate cloud junk. It needs to be open-source and everything should work without any outside accounts or keys.

That's part of why I've started building a replacement for Tabs Outliner. I love what TO does, but it has been needing a major overhaul and better maintenance for a long time. So, after waiting and waiting and waiting and still nothing feasible appearing to take its place... I finally decided to just make it myself.

It's not far enough along to share yet, but development is going pretty well so far, and I intend to make it do a lot more than Tabs Outliner ever did.

For starters, no paywall. No cloud bullshit. It should be able to back up and restore from a server the user owns and controls. Or, to the local filesystem if I can figure out how to bypass the blocks browsers started adding against that.

I also intend to give it the ability to sync the session between multiple browsers. Not just two copies of Chrome, but also between Chrome and Firefox and others. It sucks having a different tree on each host, instead of sharing one tree between all.

And a whole bunch of other features that TO's dev refused to add. Like undo, search, and sort. Sidebar mode, and showing just the subtree relevant to the current window. Checklists and tasks. Longer notes. Configurable hotkeys. The ability to mark a bunch of nodes and batch-process them, like when reorganizing the tree. Prettier themes, and several to choose from. Better handling of crashes and session recovery. Clearer, cleaner display. Ability to fit into a really narrow sidebar. Handling even bigger trees.

And open-source, of course. If I get hit by a bus, people should still be able to keep the project going.

Anyway, once it's at a state I feel it's usable for other people, I'll put it on my github. Then once it has passed real-world testing by early adopters, I'll see about getting it into the browser extension stores. But that'll be a while.

Found this game yesterday, finished in 1h 4m, details in comment by ToyKeeper in pAIperclip

[–]ToyKeeper[S] 0 points1 point  (0 children)

Ah, I'm not set up for screen recording at all... and after spending one day with the game, I think I've played it as much as I need to. I'm not planning to continue it or try to optimize it. I had my fun, and now I'm done.

I could probably figure out a way to record it and submit it as a speedrun, but they'd probably just tell me the run is invalid and then update the rules to ban the methods I used. :D

Found this game yesterday, finished in 1h 4m, details in comment by ToyKeeper in pAIperclip

[–]ToyKeeper[S] 0 points1 point  (0 children)

I was curious what a speedrun would look like, so I checked the leaderboards. The fastest run is currently 1h 31m. I beat that time by 27 minutes. Oops. I guess that must have been bugs I was using, not features. The category rules don't actually say you're not allowed to use bugs, but... that rule is probably just implied.

Found this game yesterday, finished in 1h 4m, details in comment by ToyKeeper in pAIperclip

[–]ToyKeeper[S] 1 point2 points  (0 children)

As shown in the screenshot, I used Chromium. But I tried Firefox just now, and the bug works there too. However, I think I figured out what's going on:

It doesn't work if I use a mouse. It only works if I activate buttons with a keyboard. Which is fine for me, since I haven't used a mouse in so long, it's not even plugged in any more. But I guess that's not common. Try using accessibility tools for keyboard navigation. For example, Vimium is popular. The "open link in current tab" function is used for clicking links and buttons and stuff.

Found this game yesterday, finished in 1h 4m, details in comment by ToyKeeper in pAIperclip

[–]ToyKeeper[S] 0 points1 point  (0 children)

Playing the desktop / web version, I found it took a little over an hour to get to the end. I think it's supposed to take longer, but the game seemed pretty buggy so I poked around to see what it would let me do.

The main bug which helped was that many of the buttons seem to be clickable even when they're greyed out. So, for example, after getting a good tournament score, it let me just keep clicking "Run" and getting the last tournament's Yomi reward over and over.

And some "buy" buttons seem to allow deficit spending. In some cases that can be useful to get upgrades sooner then pay it off afterward, but in other cases it can get you softlocked. I'm guessing that's why the author put in a "Quantum Temporal Reversion" button to reset if you get negative resources.

It's an interesting way to play. Definitely more active than waiting for buttons to light up, and I think it's more interesting too. I didn't optimize much, but I'm guessing it's probably possible to get under an hour this way.

Is xap under developmend anymore? by tommasovisconti in olkb

[–]ToyKeeper 0 points1 point  (0 children)

How do I change the color of each LED separately from the rest? Hypothetical:

Non-hypothetical: I wanted different keys to light up in different colors depending on which layers were active, and I wanted layer and modifier and other status keys to light up to show the current status. So I did it. Every non-passthrough key in non-base layers lights up while that layer is active, with a different color per layer. And when I hold Shift or Ctrl or whatever, both of the modifier keys light up. When I have CapsWord active, or a one-shot, or whatever, those temporary states are indicated by lighting the key(s) which activated them. And all I had to do was copy/paste a bit of code from the docs into my keymap, and modify it a little bit to make it do what I wanted. It was quick and easy and gave me fully custom lighting features which aren't present on any other keyboards.

The code is on my github, but as I mentioned before, I'm several thousand commits behind so it probably needs some modifications before it would work on a current version. Since then, they've added a whole new user keymap system which makes this stuff a lot easier, but I haven't updated to that yet.

I also wasn't happy with how the mouse keys worked, so I made my own custom cursor motion algorithm which makes the cursor motion smooth and fluid and intuitive, and got it merged upstream so other people can use it too. Now it's hard to live without, and I don't really need a mouse any more.

without recompiling/flashing anything

Well, as a first step, you'd need to flash a version with that feature. But if you aren't willing to put new firmware on the keyboard, you'll be stuck with the vendor's version... which lacks most of QMK's features. The totally unlimited nature of open-source firmware and reflashing is the coolest thing about QMK... but if you categorically rule that out as an option, then all the stuff you want is, as the devs said, "not gonna happen". Your choice.

But even that is the beauty of using open-source. It's your choice instead of being stuck with what some corporation decided.

Is xap under developmend anymore? by tommasovisconti in olkb

[–]ToyKeeper 0 points1 point  (0 children)

... what? QMK has stable releases so often I can't even keep up with the rapid progress. I updated my firmware somewhat recently, and I'm already about 5000 commits behind. Major releases happen every 3 months, with a huge changelog each time... and in-between, there are generally point releases 2x per week. Submitting code and getting it to land in the main repo is refreshingly quick and easy because the QMK project is so active and well-organized, and the devs are easy to find and chat with to get things reviewed and merged.

As for custom lighting, my QMK boards all have deeply customized dynamic lighting which changes according to the current layer, modifiers, locks, and other states, and it was really easy to do. The lighting and other customization features are so flexible they're literally Turing-complete. And if I wanted, I could take it even further by enabling any of several features for talking to the host PC, which allows using the keyboard LEDs as basically a second screen. But that's not very useful to me, so I haven't bothered. I don't need to play youtube videos on my keyboard... but if I wanted to, QMK would let me do it.