The Roland SC-8820 can be powered solely on USB, without the need for wall power, though this results in some USB bus noise with my setup, possibly because I typically have it connected to my laptop in two places at once through the USB connection and headphone jack.
I have a few MIDIs that crash the SC-8820, and on USB power, the crashing is actually audible as a change to the buzzing.
Note that I've raised the volume of this clip slightly so the change is easier to hear. The buzzing isn't typically this loud in practice.

You know what ““““AI”””” feature I’d actually use in Firefox? A locally-powered text-to-speech feature for the reader mode. Read me this web page in a natural voice, using some of the advances in recent models!

Is that possible to do efficiently in the browser, or are those models too big to be effective? Or would it need to lean on the OS APIs?

#Firefox

This entry was edited (1 week ago)

this is truly incredible: github.com/X11Libre/xserver/pu…

they are using system(3) inside a security-critical domain (the display server).

but yes, sure, my refusal of xlibre on security grounds is the problem

in reply to ShutterBugged

@developing_agent there's a few different ways to exploit it

- if you can control PATH (or the binaries in the directories referenced by PATH), you can run whatever you want in an elevated context

- there is an unescaped %s format string passed directly to the dialog application, that %s is a window title

- probably other things i'm not thinking about right now

This entry was edited (1 week ago)
in reply to Ariadne Conill 🐰

there are quite a few reactionaries in my comments, some of which have been defederated in their entirety.

for the others:

1. although the system("which ...") use is silly, that isn't the problem here.

2. what do you think will happen when the code in this PR encounters a process named `" && :() { : | : & }; :&`? will it safely handle such a process name? before saying "that's impossible" please read setprocname(3), setproctitle(3), or in the case of Linux, understand that argv[0] is mutable.

3. yes, it is an open PR. it is also reflective of the code quality of many other PRs which have been merged to Xlibre already. how do you think that impacts its security record?

In 1974 I visited the UK for the first time. It was also the first time, that I could (at least very, very rudimentarily) understand the language in a foreign land.

So my parents had „the talk“ with me: Why people may react negatively to me being a German. There was a big war and a very bad man named Hitler. I didn’t understand anything at all.

Will future U.S. children have to go through a similar talk?

🔐 Did CryptPad help you this year?

Millions of documents were written and shared on CryptPad this year, all encrypted on the user’s device.

If every active user gave 5 EUR in December, the project could be funded for all of 2026 without external grants.

If you want to support private, open-source collaboration, you can donate here:
👉 opencollective.com/cryptpad

Thank you to everyone who already supports us 💚.

#CryptPad #FLOSS #Privacy #E2EE #DigitalSustainability

😂 LOSER

Swiss Eurovision champion Nemo returns winner's trophy to protest Israel's inclusion | Euronews

euronews.com/culture/2025/12/1…

#NEMO #EUROVISION #SWITZERLAND #ISRAEL #PRESS

Exchange email support has landed! We've invited members of our desktop team to Community Office Hours to give us all the details about what's in now and what's coming next!

#Thunderbird #Exchange

blog.thunderbird.net/2025/12/v…

Pleast boost for reach:
On the subject of Linux phone accessibility, the developer of AT-SPI wrote:
There's a long-standing issue that Joanie filed against at-spi2-core for
touch screen support:
gitlab.gnome.org/GNOME/at-spi2…

Ande I haven't taken the time to figure out how best to handle this. I'm
not sure if evdev would do what we need, or we might want to work with the
maintainers of mutter, KWin, etc. to create a protocol for
intercepting/manipulating gestures. We would also need code that can
detect gestures from touch screen presses. NVDA has code that we might be
able to use as a model.

All of this is theoretically on my list of things to do. Of course, help
would be welcome if anyone else was able to take it on.
end quote

For blind people to switch to Linux on phones, we need to use the touch screen. If anyone can help with this, it would allow the blind to take one step closer to being capable of creating our own accessibility, our own environments, in the way that helps us most. See NVDA as a great example of how that goes.
#accessibility #blind #foss #linux #phones #pinephone

reshared this

Here's an interesting bit* of Canadian history and woodworking trivia, brought to you by me being enraged at a screw stripping while I was trying to remove it.

Most people are familiar with two types of screws & drivers: the old fashioned slot screw and the cross-shaped Phillips screw.

What if I told you there was a better way?

In 1908, a Canadian inventor named Peter Lymburger Robertson invented a screw with a square hole for the driver. If you've done any woodworking, you're probably familiar with it. This screw/driver design was very popular, as it is self-centering and the driver rarely slips out of the screw.

So why didn't the Robertson screw catch on in the USA? I blame Henry Ford. He initially was the Robertson screws biggest fan, as it was found to remarkably increase production speed. So Ford tried to get Robertson Inc. to give him an exclusive contract. Robertson wasn't interested. In the 1930s, an American inventor, Henry Phillips, created a screw/driver with a cross-shaped slot. Mr. Ford liked this screw because it worked well with powered screwdrivers. I think he also had sour grapes over Robertson rejecting him. At any rate, Ford's adoption of the Phillips screw/driver made it very popular throughout the USA.

If you've ever tried to build Ikea furniture, you probably know the frustration of cheaply-made Phillips screws. If your screwdriver is not the precise size for the screw, it will slip out of that cross repeatedly or just turn helplessly, unable to engage with the screw. In either case, there's a chance of stripping the screwhead. This can also happen when overtightening.

My husband insists on replacing stock Ikea (and other manufacturer's) screws with Robertsons, especially on anything that requires good structural strength or is made from a harder material. Worst case is that the screwdriver bit gets stuck in the screw, but this is easily remedied. With a Phillips screw, if it strips, you're hooped. You have a loose screw or an embedded screw that's never coming out.

tl;dr: I recommend replacing Phillips screws/drivers with Robertson ones, especially if you find your Phillips screws stripping regularly.

This has been a Canadian Heritage Moment.

interestingengineering.com/inn…

*pun not initially intended, but I kept it because lols

#screws #PhillipsScrews #RobertsonScrews #canada #woodworking #ikea #screwdrivers #HenryFord

in reply to Hubert Figuière

Phillips is a PITA for sure. I tend to use Torx where possible; Robertson seems to have similar qualities. I'm not sure about the IP situation there.

These days, a drill clutch in the chuck allows the operator to set a rough maximum torque; with non-slipping fasteners and powerful or single-speed drills, this prevents accidents. In its absence the Phillips cam-out acts analogously. So, I wonder if the drill clutch was only introduced after the episode you described.

This entry was edited (1 week ago)

Before the Gaza Humanitarian Foundation started operating in May 2025, substantial food entered Gaza, but Hamas seized much of it, diverted large quantities to fighters, and sold the remainder on the black market at prices ordinary Gazans could not afford. None of this appeared in wire service imagery.
honestreporting.com/how-hamas-…
Gaza-based photographers reinforced a global famine narrative, producing images that aligned with a political storyline rather than a complete reality.

#Gaza #media #press

Today is audio ducking day here at interfree! If you use the 64-bit #NVDA, there are a couple small releases for you:
* eloquence: audio ducking now works thanks to akj: github.com/fastfinge/eloquence_64/releases/tag/v5* unspoken-ng: if you use this addon, you also need to update, or audio ducking will remain broken, because someone (glares at himself) didn't quite understand NVWavePlayer: github.com/fastfinge/unspoken-ng/releases/tag/v1.0.3
#nvda
in reply to 🇨🇦Samuel Proulx🇨🇦

Here's my log as of this NVDA session: INFO - __main__ (16:59:42.179) - MainThread (7576): Starting NVDA version alpha-53763,79a07dc1 AMD64 INFO - core.main (16:59:42.248) - MainThread (7576): Config dir: C:\Users\synvo\AppData\Roaming\nvda INFO - config.ConfigManager._loadConfig (16:59:42.257) - MainThread (7576): Loading config: C:\Users\synvo\AppData\Roaming\nvda\nvda.ini INFO - core.main (16:59:42.293) - MainThread (7576): Developer Scratchpad mode enabled INFO - core.main (16:59:43.372) - MainThread (7576): Windows version: Windows 11 25H2 (10.0.26200.7462) workstation AMD64 INFO - core.main (16:59:43.372) - MainThread (7576): Using Python version 3.13.9 (tags/v3.13.9:8183fa5, Oct 14 2025, 14:09:13) [MSC v.1944 64 bit (AMD64)] INFO - core.main (16:59:43.372) - MainThread (7576): Using comtypes version 1.4.13 INFO - core.main (16:59:43.374) - MainThread (7576): Using configobj version 5.1.0 with validate version 1.0.1 WARNING - gui.__getattr__ (16:59:44.166) - MainThread (7576): Importing SettingsPanel from here is deprecated. Import SettingsPanel from gui.settingsDialogs instead. Stack trace: File "nvda.pyw", line 309, in File "core.pyc", line 791, in main File "speech\__init__.pyc", line 161, in initialize File "synthDriverHandler.pyc", line 514, in setSynth File "synthDriverHandler.pyc", line 480, in getSynthInstance File "synthDriverHandler.pyc", line 442, in _getSynthDriver File "importlib\__init__.pyc", line 88, in import_module File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 1027, in exec_module File "", line 488, in _call_with_frames_removed File "C:\Users\synvo\AppData\Roaming\nvda\addons\Eloquence\synthDrivers\eloquence.py", line 154, in class EloquenceSettingsPanel(gui.SettingsPanel): File "gui\__init__.pyc", line 123, in __getattr__ INFO - synthDriverHandler.setSynth (16:59:45.062) - MainThread (7576): Loaded synthDriver eloquence INFO - mathPres.MathCAT.MathCAT.MathCAT.__init__ (16:59:45.088) - MainThread (7576): MathCAT 0.7.2 installed. Using rules dir: C:\Program Files\NVDA\include\nvda-mathcat\assets\Rules INFO - core._setUpWxApp (16:59:45.102) - MainThread (7576): Using wx version 4.2.4 msw (phoenix) wxWidgets 3.2.8 INFO - brailleInput.initialize (16:59:45.104) - MainThread (7576): Braille input initialized INFO - braille.initialize (16:59:45.104) - MainThread (7576): Using liblouis version 3.36.0 INFO - braille.initialize (16:59:45.104) - MainThread (7576): Using pySerial version 3.5 INFO - braille.BrailleHandler._setDisplay (16:59:45.108) - MainThread (7576): Loaded braille display driver 'noBraille', current display has 0 cells. INFO - core.main (16:59:45.290) - MainThread (7576): Java Access Bridge support initialized INFO - UIAHandler.UIAHandler.MTAThreadFunc (16:59:45.416) - UIAHandler.UIAHandler.MTAThread (12088): UIAutomation: IUIAutomation6 WARNING - gui.__getattr__ (16:59:45.602) - MainThread (7576): Importing SettingsPanel from here is deprecated. Import SettingsPanel from gui.settingsDialogs instead. Stack trace: File "nvda.pyw", line 309, in File "core.pyc", line 916, in main File "globalPluginHandler.pyc", line 31, in initialize File "globalPluginHandler.pyc", line 23, in listPlugins File "importlib\__init__.pyc", line 88, in import_module File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 1027, in exec_module File "", line 488, in _call_with_frames_removed File "C:\Users\synvo\AppData\Roaming\nvda\addons\navSounds\globalPlugins\NavigationSounds\__init__.py", line 13, in from gui import SettingsPanel, NVDASettingsDialog, guiHelper File "", line 1412, in _handle_fromlist File "gui\__init__.pyc", line 123, in __getattr__ WARNING - gui.__getattr__ (16:59:45.602) - MainThread (7576): Importing SettingsPanel from here is deprecated. Import SettingsPanel from gui.settingsDialogs instead. Stack trace: File "nvda.pyw", line 309, in File "core.pyc", line 916, in main File "globalPluginHandler.pyc", line 31, in initialize File "globalPluginHandler.pyc", line 23, in listPlugins File "importlib\__init__.pyc", line 88, in import_module File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 1027, in exec_module File "", line 488, in _call_with_frames_removed File "C:\Users\synvo\AppData\Roaming\nvda\addons\navSounds\globalPlugins\NavigationSounds\__init__.py", line 13, in from gui import SettingsPanel, NVDASettingsDialog, guiHelper File "gui\__init__.pyc", line 123, in __getattr__ INFO - _remoteClient.client.RemoteClient.__init__ (16:59:45.604) - MainThread (7576): Initializing NVDA Remote client INFO - core.main (16:59:45.617) - MainThread (7576): NVDA initialized INFO - config.ConfigManager.save (21:31:24.442) - MainThread (7576): Base configuration saved INFO - watchdog.waitForFreezeRecovery (22:21:34.093) - watchdog (664): Starting freeze recovery after 0.5007226999987324 seconds. INFO - watchdog.waitForFreezeRecovery (22:21:34.295) - watchdog (664): Recovered from freeze after 0.7027228999977524 seconds. INFO - config.ConfigManager.save (22:32:42.587) - MainThread (7576): Base configuration saved INFO - watchdog.waitForFreezeRecovery (22:38:07.771) - watchdog (664): Starting freeze recovery after 0.500288700000965 seconds. INFO - watchdog.waitForFreezeRecovery (22:38:08.023) - watchdog (664): Recovered from freeze after 0.7524827000015648 seconds. INFO - watchdog.waitForFreezeRecovery (22:38:31.677) - watchdog (664): Starting freeze recovery after 0.5002370000001974 seconds. INFO - watchdog.waitForFreezeRecovery (22:38:32.030) - watchdog (664): Recovered from freeze after 0.8534374000009848 seconds. INFO - watchdog.waitForFreezeRecovery (22:42:02.649) - watchdog (664): Starting freeze recovery after 0.500347299999703 seconds. INFO - watchdog.waitForFreezeRecovery (22:42:02.952) - watchdog (664): Recovered from freeze after 0.8033006000005116 seconds. INFO - watchdog.waitForFreezeRecovery (22:47:05.011) - watchdog (664): Starting freeze recovery after 0.5001825999970606 seconds. INFO - watchdog.waitForFreezeRecovery (22:47:05.365) - watchdog (664): Recovered from freeze after 0.8542182999990473 seconds. INFO - watchdog.waitForFreezeRecovery (07:32:23.241) - watchdog (664): Starting freeze recovery after 0.5000717000002624 seconds. INFO - watchdog.waitForFreezeRecovery (07:32:23.393) - watchdog (664): Recovered from freeze after 0.652151700000104 seconds. INFO - watchdog.waitForFreezeRecovery (07:32:49.362) - watchdog (664): Starting freeze recovery after 0.5001726999980747 seconds. INFO - watchdog.waitForFreezeRecovery (07:32:49.413) - watchdog (664): Recovered from freeze after 0.5510054999977001 seconds. INFO - watchdog.waitForFreezeRecovery (07:33:14.422) - watchdog (664): Starting freeze recovery after 0.5002416999996058 seconds. INFO - watchdog.waitForFreezeRecovery (07:33:14.675) - watchdog (664): Recovered from freeze after 0.7529530999963754 seconds. INFO - watchdog.waitForFreezeRecovery (07:35:18.576) - watchdog (664): Starting freeze recovery after 0.5003122999987681 seconds. INFO - watchdog.waitForFreezeRecovery (07:35:18.930) - watchdog (664): Recovered from freeze after 0.8539851999958046 seconds. INFO - watchdog.waitForFreezeRecovery (07:35:19.810) - watchdog (664): Starting freeze recovery after 0.5002815000043483 seconds. INFO - watchdog.waitForFreezeRecovery (07:35:21.524) - watchdog (664): Recovered from freeze after 2.2145548000044073 seconds. INFO - watchdog.waitForFreezeRecovery (07:41:17.062) - watchdog (664): Starting freeze recovery after 0.5000419000061811 seconds. INFO - watchdog.waitForFreezeRecovery (07:41:17.517) - watchdog (664): Recovered from freeze after 0.9544934000005014 seconds. INFO - watchdog.waitForFreezeRecovery (07:41:18.043) - watchdog (664): Starting freeze recovery after 0.5000438999995822 seconds. INFO - watchdog.waitForFreezeRecovery (07:41:18.397) - watchdog (664): Recovered from freeze after 0.8533956000028411 seconds. INFO - globalCommands.script_navigatorObject_devInfo (08:26:04.868) - MainThread (7576): Developer info for navigator object: name: "White Spy Adrian 'Musics' &&& Ruby [Eyeball] - Sonic 3 &&& Knuckles: Hard Bosses Edition (V.400.0) -OST- = Major Boss Theme || Username - PREVUE guide Era 2 Song #1 -- HIGHEST QUALITY!" role: BUTTON processID: 8664 roleText: None states: FOCUSABLE isFocusable: True hasFocus: False Python object: Python class mro: (, , , , , , , ) description: '' location: RectLTWH(left=1063, top=720, width=32, height=48) value: None TextInfo: appModule: AppModule(explorer, appName='explorer', processID=8664) appModule.productName: 'Microsoft® Windows® Operating System' appModule.productVersion: '10.0.26100.1301' appModule.helperLocalBindingHandle: c_void_p(2581291365184) appModule.appArchitecture: 'AMD64' windowHandle: 196860 windowClassName: 'Windows.UI.Input.InputSite.WindowClass' windowControlID: 0 windowStyle: 1342177280 extendedWindowStyle: 0 windowThreadID: 9816 windowText: '' displayText: '' UIAElement: UIA automationID: NotifyItemIcon UIA frameworkID: XAML UIA runtimeID: (42, 196860, 4, 4) UIA providerDescription: [pid:8664,providerId:0x0 Main(parent link):Unidentified Provider (unmanaged:Windows.UI.Xaml.dll)] UIA className: SystemTray.NormalButton UIA patterns available: LegacyIAccessiblePattern, ScrollItemPattern, InvokePattern

Short of reading material on a flight this afternoon I noticed the RNIB's Access IT magazine pop into my inbox just before takeoff. It's never exactly been on the front foot, but to arrive *today* with a whole section about deals *from the RNIB themselves* which expire on *December 5th* ... takes the editorial standard to a new low. Still, it killed 15 minutes at 37,000ft. Bertie has had 2 impressive bowel movements whilst out today. Shame the magazine wasn't in braille, could have used it to clean him up!

Zach Bennoui reshared this.

Great software is free software.

Out of the many brilliant #FOSS tools out there, ZDNet’s Jack Wallen picks seven he considers so good he’d gladly “throw down some cash“.

And guess what? Nextcloud is one of them. Well, we wouldn’t settle for less 😉

zdnet.com/article/7-open-sourc…

#foss

When I tried to tell my mom about me wanting to change my name, she made an absolutely massive deal about how people would think it's unprofessional or that I was trying to hide my identity (whatever that means, never mind my legal name is on invoices and anything relating to finances). She hammered it into my head that I wouldn't get a job if I put anything other than my legal name on my resume. But would you look at that, first try putting my authentic self out there and I work at a company with some of the most supportive and awesome coworkers ever, and I love my job. So TLDR, my mom was wrong as is pretty much the norm for any queer issue, and supportive work environments are terrific things.
in reply to Milu P. Pragerova

@Milu FairEmail umí také více účtu, ale Thunderbird není špatný.
Já porad nevím co je špatného na Owner profilu mít Google play, které běží v sandboxu. Nemá v systému žádná práva, je to jak běžná aplikace.Sice teď mám také víc profilů, ale stále si říkám, jestli mi za to stojí.
Newpipe mně momentálně nepřehraje žádné video.

@nacelnik01

in reply to Archos

@Milu Já jen ještě dodám. Třeba originální Grapheneos kamera je nic moc. Ja mám klasickou pixel kameru a vypnutý u ní internet. Zase když už má člověk trochu dražší telefon, chci ho pořádně využít. Jinak k tomu Google play, samozřejmě nechci nikoho nutit co a jak má používat, jen si říkám, jestli se někdy zbytečně netrápíme 😀
Na počasí mam BreezyWeatheer
f-droid.org/packages/org.breez…
A ještě přidám Syncthing - fork
f-droid.org/packages/com.githu…
in reply to Schmaker

@schmaker
Já mám taky Aurora store na apky co na fdroid nejsou a potřebuji je.

Jinak mě asi ta jejich kamera stačí. Nejsem zas nějaký fotící maniak a pro mě je to dobrá kvalita. Skromná jsem 🥸
Na počasí mě asi nejvíce vyhovuje Cirrus. Vyzkoušela jsem jich hodně a toto rozložení mi vyhovuje.
Jinak asi máte Zdeňku pravdu, že u GOS ty apky z play nebudou problém ale za mě osobně se mi líp dýchá čím míň jich tam mám. Jen pocit.

A ted mi při mé hlouposti došlo, že už máte Milane ten pixel s GOSem? Já myslela až po novém roce? 🙃
@archos @nacelnik01

in reply to Milu P. Pragerova

@Milu Přesně tak — u GrapheneOS je to hodně i o pocitu. Technicky ty aplikace z Play problém nejsou, ale když jich má člověk míň, prostě se mu líp dýchá. Hlavně má každý jiné potřeby — já se v práci bez WhatsAppu neobejdu a pravidelně potřebuju navigaci. Pro mě je důležité, aby kalendář, kontakty, e-mail a další věci neměl Google, stejně tak vyhledávání. To, jestli mám Google Play v sandboxu, je mi v zásadě jedno.@schmaker @nacelnik01

I'm a bit worried about the discourse around #ai.

It's totally OK to have strong opinions either way, but I feel like in certain circles it's becoming a purity test.

Do you hold the RIGHT opinions about AI, how it's trained and how it's used?

I think pointing out the dangers is important. Pointing out the risks is important, but recognizing that the situation is nuanced and complex is important as well.

#AI
in reply to Matt Campbell

@matt
To make an analogy to something much less divisive: it was clear to me that at some point, we would want to move away from subversion to some other version control system. It was also clear that the market would eventually settle down, and whatever won would have a clear upgrade path from subversion -- but that couldn't be said for all of the intermediate contenders.

So it was prudent to avoid moving until the winner clearly emerged.

I am letting people play with LLMs in controlled circumstances, wtihout ever putting their results into production and clearly marking what they do and how they got there. Someday it may crash and burn; someday it might produce something worthwhile and sustainable. But until then, the responsible thing to do is not to do it.

in reply to -dsr- (hypoparenthetically)

@dashdsrdash @matt You are absolutely correct for any situation where correctness cannot be trivially and unarguably verified.

There are situations however where correctness is a binary toggle and as plain as the nose on my face.

Does the web interface look like how I want?

Did this Python code build the correct bag of infrastructure needed to run the site?

These are trivially answerable questions.

in reply to Feoh

@matt

Gosh, no. "The web interface looks the way I want" is not "the web interface is correct", and the entire history of software development as a craft slowly working its way into an engineering discipline is the story of why those things are different.

There are things which have provably correct answers, and beyond the trivial ones, they tend to be things like "use this well-tested theorem prover".

The problem with repeatedly feeding LLM output to a theorem prover and checking for correctness is the same problem as with bogosort, the canonically worst of all possible sorting algorithms.

(In case you have forgotten bogosort:

10 LIST.randomize-order

20 if LIST.sorted != true then goto 10

In case anyone is standing next to the computer help desk...
With the ever increasing number of IOT devices in my house, I'm looking to migrate to a more secure networking strategy with 0 trust approach using segmented VLANs. Does anyone have experience with Firewalla vs. equivalent Ubiquiti gear?
I'm currently running an Eero POE gateway with an Eero 7 Max mesh. The network functions well enough, however I'm finding the lack of control over basic routing functionality on the Eero maddening.

Rust 1.92.0 has been released! 🌈 🦀

This version adds RwLockWriteGuard::downgrade(), adds Location::file_as_c_str(), improves diagnostic and validation for various attributes, no longer warns for unused Result<(), Infallible>, and more!

Check out the announcement: blog.rust-lang.org/2025/12/11/…

I'm happy that my proposal for an introductory course on Homotopy Type Theory / Univalent Foundations at the European Summer School in Logic, Language and Information 2026 in Prague was accepted!

A great opportunity to make use of @egbertrijke's recently published book, @MartinEscardo's lecture notes (in Agda!) and @danielgratzer and @carloangiuli's book draft!

Links for the curious:
- Egbert's book: doi.org/10.1017/9781108933568 & arxiv.org/abs/2212.11082
- Martín's notes: cs.bham.ac.uk/~mhe/HoTT-UF-in-…
- Daniel and Carlo's book draft: danielgratzer.com/papers/type-…

#logic #typetheory

This entry was edited (1 week ago)

WhatsApp Desktop Faces Major Update: Users Warned of Forced Logout and Resource-Hungry Upgrade

WhatsApp is preparing to log users out of its PC applications with a sweeping update set to begin on December 9, 2025. This comes as part of Meta’s plan to replace the older native Windows WhatsApp with a Chromium-based version—a move that promises new features but significantly increases system resource usage. While this is not the first warning, it signals a major shift in…

undercodenews.com/whatsapp-des…