A public dev diary — building a desktop OS for wp-admin.

RSS
  • Daniel López Avatar

    We measured it: OpenStation windows can open in 3 milliseconds

    OpenStation turns your WordPress admin into a desktop: windows, a dock, wallpaper, drag and drop. The promise was always that it should feel better. This week we checked whether it is actually faster.

    Every number below was measured on the site you are reading right now — openstation.blog, over a real network, on real WordPress.com hosting.

    The short version

    • Six ordinary screen changes: 14.6 seconds in classic wp-admin, 8.0 in OpenStation.
    • Going back to a screen you already have open: 1.9–3.3 seconds in classic, 0.6 of a millisecond here.
    • Starting the admin: a third of the weight it had in version 1.0 — about 2 seconds on 3G instead of 10.

    Your admin boots like an operating system, and then behaves like one.

    Why a classic admin feels slow

    A classic admin throws your page away every time you click.

    Click Settings, wait. Click Tools, wait. Click back to Settings — the screen you were looking at a minute ago — and you pay full price again. Measured here: 1,903–3,326 ms per click, every time, forever.

    Nothing in that design remembers anything, so it can never get better.

    Windows don’t get thrown away

    OpenStation’s answer is the one every desktop reached decades ago: stop throwing things away.

    Your windows stay alive. Returning to an open screen isn’t a page load, it’s just bringing a window to the front: 0.6 ms median, 1.2 ms at its worst.

    That is not a percentage difference. It is a change of unit — seconds become fractions of a millisecond, on the single most common thing you do in an admin. No settings, no flags, no cache. It’s simply what happens when your admin has windows.

    Six clicks, both ways

    The fairest test we could think of is the most ordinary task there is: Settings → Writing → Reading, twice. Six screen changes, same site, same sitting.

    Classic wp-adminOpenStation
    Total waiting, six screens14.6 s8.0 s
    Typical screen2.1 s1.0 s
    Fastest1.9 s0.98 s
    Slowest3.3 s2.0 s

    Roughly twice as fast — and this journey is deliberately hard for us: three different pages, none of them already open. It’s the case where OpenStation has the least structural advantage, and it still wins by half.

    We also put the desktop on a diet

    In version 1.0, everything loaded the moment you opened the admin: every window, every dialog, every extra feature — including the ones you were never going to touch that day.

    So for two releases we kept asking one question:

    Does the desktop need this right now, or only when someone uses it?

    Kilobytes are abstract; waiting is not. Here is the time your browser spends just downloading OpenStation’s startup files before the desktop can appear:

    Connectionv1.0.0Today
    3G (1.6 Mbps)~10 seconds~2 seconds
    4G (12 Mbps)~1.4 seconds~0.3 seconds

    Nothing was removed. Every feature still works — it just waits for its natural moment:

    • The file uploader loads the instant you start dragging a file, and finishes before you let go of the mouse.
    • The sharing dialog loads the first time you click Share.
    • Sticky notes load only if your desktop actually has notes.
    • The command palette (⌘K) was the heaviest passenger of all — over a megabyte of editor code on every visit, just in case you pressed it. It now loads the first time you actually do, and still opens instantly.

    The editor got the same treatment. OpenStation used to add its own files to every Gutenberg window, where they did nothing at all. Today it adds none — you get Gutenberg at exactly the speed WordPress itself delivers it.

    One detail we’re quite proud of: since 1.0 OpenStation has gained Station Home, desktop themes, games, the notes wall and more. Today’s startup is still lighter than 1.0’s. Growing the product and slimming the start turned out to be two separate things.

    Booting an OS

    Opening OpenStation from scratch costs more than opening a single classic page, and it always will: the desktop loads its own document and a real admin screen inside a window. That is the honest price of a desktop.

    But it used to be much worse. A boot was two server renders running strictly one after the other — your window’s page couldn’t even be asked for until the shell’s HTML had arrived and built a frame, nearly four seconds in. And the shell can never fix that from inside itself: by the time its code exists, those seconds are already spent.

    The service worker can, because the browser wakes it for the shell’s own request, before the server has even finished answering. It now starts your windows’ pages right then, in parallel, using what the last session told it.

    Window pages went from 1,247–1,353 ms to 1–2 ms, a whole boot from 6,492 ms to 5,183 ms, and the first usable window now arrives 1.7 seconds sooner.

    Two experiments you can switch on

    1. A cache shared by every window

    Every window is a real admin page, and real admin pages are heavy — 117–147 requests for a screen like Settings. But a service worker sees every request from every window, so versioned admin assets now come from one cache bucket shared by all of them.

    With it on, opening a window makes zero network requests for cacheable assets. A cache hit costs 0.8–2.3 ms instead of 176–260 ms over the network — roughly a 100× advantage per request, and it holds for the heavy stuff too.

    One accidental proof that the shared part is real: during testing a file came back in 2 ms on what should have been a cold fetch, because a completely different window had already put it in the bucket. That’s the whole idea — every window you open makes the next one faster.

    2. Windows that start loading before you click

    The page itself can’t be cached — admin HTML carries nonces and per-request state. But it doesn’t have to wait for the click.

    A sustained hover on a dock icon is a strong hint about your next click, so a 180 ms hover now builds that window hidden and starts loading it while you’re still deciding. Click, and the desktop simply adopts it.

    A normal window open took 2,000 ms. The same open against a prewarmed window took 3.3 ms. If you never click, the speculative window quietly disposes of itself after 45 seconds — invisible to sessions, taskbar and Alt-Tab the whole time.

    And because our last two releases were spent on that diet, we checked the cost of the features themselves: +0 asset requests, +0.01% boot document. The boot path is untouched.

    Three things measuring turned up

    Measuring properly has a way of surfacing things nobody was looking for. In ascending order of embarrassment:

    • Windows were loading a toolbar they never draw. Eight files, about 49 KB, working on something that isn’t even in the page. Removed, along with the emoji script the block editor already drops: nine fewer files and ~71 KB per window.
    • The biggest thing in the page was us. The little program OpenStation puts inside every window was written into the HTML in full, unminified — about 125 KB, the largest block in the document, and the one thing no cache could ever help with. It’s now a proper file: 34 KB, fetched once and reused, and the page each window delivers went from 76 KB to 37 KB.
    • On WordPress.com, our service worker had never executed. Ever. The platform’s nginx short-circuited the address it lived at, silently, for the whole life of the feature. It now lives somewhere that always reaches WordPress — and as far as we know, openstation.blog is the first WordPress.com site this service worker has ever run on.

    Which is really the lesson of both releases: don’t trust intentions, measure what the browser actually downloads. Several features we were sure loaded on demand were being quietly bundled back into the startup. We now have an automatic check that fails the build if anything heavy sneaks back in.

    The scoreboard

    MeasurementClassic wp-adminOpenStation
    Returning to a screen you already have open1,903–3,326 ms, every time0.6 ms median
    Six screen changes14.6 s8.0 s
    Typical single screen change2.1 s1.0 s
    Cold start, from nothing3,494 ms5,183 ms — the one-time boot
    Asset requests per window (cache on)117–143 every navigation0 on the network
    Per-asset fetch, browser-cold176–260 ms0.8–2.3 ms
    Opening a new screen from the dock1,903–3,326 ms3.3 ms on a prewarm hit
    Startup download, 3G—~10 s in 1.0 → ~2 s
    The page each window delivers—76 KB → 37 KB

    The point

    Classic wp-admin has one speed and it never improves. Every screen costs what it cost the first time you saw it — today, tomorrow, and in five years.

    OpenStation asks for a little more when you sit down, and then gets out of your way. Screens you have open are instant. Screens you move between cost half what they used to. The assets behind them stop touching the network, and the pages start loading before you click.

    The longer your session runs, the further those two lines diverge — which is precisely backwards from how WordPress admin performance has worked until now.

    Both experiments land in version 1.1.4 under OpenStation Preferences → Features → Beta features: “Shared asset cache” and “Prewarm windows on hover”. They’re off by default while they gather real-world mileage — which is also an invitation. Turn them on, and tell us what your numbers look like.


    How the 3G and 4G seconds were calculated: we measured the compressed size of every file OpenStation makes the browser download at startup, rebuilding version 1.0.0 from its release tag and measuring today’s build the same way, then divided by the standard 1.6 Mbps and 12 Mbps profiles browser developer tools use. Real devices also spend time processing those files, so real-world differences are slightly larger than the table shows, never smaller. Everything else was measured live on openstation.blog.

  • Daniel López Avatar

    One Screenshot, One Tiny Improvement

    There are few things we love more than seeing someone actually use OpenStation.

    A few days ago, Juan Lentino sent us a screenshot of his OpenStation desktop.

    He was using it with Signal & Noise Tools, his self-hosted business platform for freelancers, and honestly… seeing someone build their own workspace with OpenStation made us ridiculously happy.

    But then we noticed something.

    Looking at the screenshot, we realised there was one small thing missing.

    A grid.

    Right now, you can move widgets around freely, but if you want to create a really clean layout, getting everything perfectly aligned takes a bit of work.

    So we thought: why not make the desktop snap to a grid?

    It is a tiny change.

    But it is exactly the kind of tiny change that makes a desktop feel better to use.

    You should be able to move things around, experiment with your workspace, and then quickly get everything lined up exactly how you want it.

    So, Juan, thank you for the screenshot. ❤️

    You didn’t just show us how you’re using OpenStation.

    You accidentally gave us our next little tweak.

    And that’s one of the things we love about building in the open: sometimes the best product ideas come from simply seeing someone else use what you’ve built.

    Grid has been added in version 1.1.2 🧩

  • Daniel López Avatar

    The First Photo Editor for OpenStation Is Now on WordPress.org

    Yesterday was a huge milestone for OpenStation, and honestly, we are still celebrating.

    The very first photo editor built for OpenStation has officially been approved in the WordPress.org Plugin Repository. After weeks of development, testing, and polishing, AllTerrain Photo Editor is finally available for everyone, the first OpenSource clone of Photoshop for WordPress.

    This is much more than an image editor. It is a creative tool designed from the ground up to feel like a native OpenStation application, with deep integration that changes the way you work inside WordPress.

    Edit images like a desktop app

    The experience is simple, fast, and surprisingly powerful.

    You can drag any image directly into the editor and it instantly becomes a new layer. Even better, if you are using WooCommerce, you can drag an entire product onto the application icon and immediately start editing its featured image without searching through your media library.

    It feels less like a traditional plugin and more like having Photoshop inside your OpenStation workspace.

    That level of integration is exactly what OpenStation is about. Different applications working together naturally, making WordPress feel like a real operating system instead of a collection of isolated pages.

    And we have another announcement…

    If you follow us on LinkedIn, you have probably noticed that we have been making a lot of noise lately. But there is one thing we had not officially shared here.

    We have launched an OpenStation YouTube channel.

    Our goal is simple. We want to show, not just tell.

    Every week we will be publishing videos about new applications, hidden features, development progress, and the crazy ideas that are becoming reality inside OpenStation. There is so much coming that short social media posts simply are not enough anymore.

    If you enjoy WordPress, open source software, or building better publishing tools, we think you will love what is coming next.

    This is only the beginning

    The approval of AllTerrain Photo Editor is an important moment, but it is also the first step. OpenStation is growing into an ecosystem of fully integrated applications that push WordPress far beyond its traditional limits.

    Thank you to everyone who has supported the project, tested early versions, shared feedback, and believed in this vision.

    The best part is that we are just getting started.

  • Daniel López Avatar

    Why Are We Paying for Software We Could Run Ourselves?

    There is something I have been thinking about lately.

    Why do we depend so much on online services for things that, in many cases, are not really services at all?

    Take Google Docs or Google Sheets. Or Todoist, Notion, Canva, Airtable, and many other tools we use every day. They are convenient, polished, and easy to use. There is nothing wrong with them.

    But at some point, we seem to have accepted a strange idea: that if we want to use a piece of software, we also have to rent the software from the company that made it.

    And I am not sure that this should be the default.

    What are we actually paying for?

    There is an important difference between software and infrastructure.

    If I want to run a website, I understand that I need a server. Someone has to provide CPU, memory, storage, networking, backups, electricity, and all the infrastructure required to keep that server running.

    That is infrastructure.

    But if I want a simple task manager, a spreadsheet, a form builder, an image editor, or a document editor, why does that necessarily have to be a service operated by somebody else?

    The software itself can often run on hardware that I control.

    That hardware can be sitting on my desk.

    It can be a small home server.

    Or it can be a virtual machine in a cloud provider.

    It does not really matter.

    The important part is that the software belongs to me and runs on infrastructure that I control.

    The cloud does not have to mean someone else’s software.

    It can simply mean someone else’s hardware that I rent.

    The subscription model changed how we think about software

    The SaaS model has been incredibly successful because it solves many real problems.

    You do not have to install anything. You do not have to maintain servers. You get automatic updates. You can access your data from anywhere.

    All of that is useful.

    But convenience has also changed our expectations.

    We have started treating very simple software as something that must permanently exist behind somebody else’s login page.

    A task manager becomes a subscription.

    A spreadsheet becomes a subscription.

    A document editor becomes a subscription.

    A form builder becomes a subscription.

    An image editor becomes a subscription.

    And once you accept that model, you are not only paying for the software. You are also accepting the rules of the company operating it.

    Your account can be suspended.

    The pricing can change.

    Features can move between plans.

    The product can be discontinued.

    An API can change.

    A company can decide that your particular use case is no longer interesting to them.

    None of this necessarily makes those companies bad. It is simply the natural consequence of depending on someone else’s service.

    What if we separated software from infrastructure again?

    Imagine a different model.

    You rent a server from whatever provider you like.

    You have 2 GB of RAM. Or 8 GB. Or 64 GB.

    You have as much storage as you need.

    You install an operating system.

    And then you install your software.

    Not someone else’s SaaS instance.

    Your software.

    You decide what runs on it.

    You decide when it gets updated.

    You decide who can access it.

    You decide how much hardware it gets.

    If you need more CPU, you get more CPU.

    If you need more memory, you get more memory.

    If you need more storage, you get more storage.

    The limitations are mostly the limitations of the machine you are running it on.

    This is a very different relationship with software.

    You do not need a massive infrastructure company to do this

    This is one of the things I find particularly interesting about web technologies.

    A surprising amount of software can be built with technologies that browsers already understand.

    HTML.

    CSS.

    JavaScript.

    WebGL.

    And, when necessary, a small server-side component.

    That means an application does not necessarily need to be a massive platform with thousands of servers and a proprietary backend.

    It can simply be software.

    Software that you download.

    Software that you install.

    Software that you run.

    And this is where projects like OpenStation become interesting.

    OpenStation brings a desktop-like environment to WordPress, with windows, a dock and virtual desktops inside the WordPress admin.

    But the more interesting idea, at least for me, is what you can put inside that environment.

    For example, AllTerrain Photo Editor is a non-destructive, GPU-accelerated image editor built for WordPress and OpenStation. The editor does the actual image processing in the browser using WebGL, while the server mainly stores the result.

    There is also AllTerrain Work, an open source task manager for OpenStation, and AllTerrain Forms, for creating forms inside the same environment.

    And this is the part I find exciting.

    These are not separate SaaS products that require another account, another subscription, another dashboard and another company to sit between you and your software.

    They are applications.

    You can run them as part of your own environment.

    Your cloud server can become your computer

    We often talk about “the cloud” as if it were a completely different thing from having a computer.

    It is not.

    A cloud server is still a computer.

    It has a CPU.

    It has RAM.

    It has storage.

    It runs software.

    The main difference is that the computer is somewhere else and you rent access to it.

    So why should renting a computer automatically mean renting all the software that runs on it?

    It doesn’t have to.

    You can rent the infrastructure and own the software.

    That distinction is surprisingly powerful.

    You could have a small virtual server and run your own WordPress installation, OpenStation, and whatever applications you need.

    Your server becomes your private software platform.

    Not because some company gave you permission to use a particular SaaS product, but because you installed the software yourself.

    This is not about replacing every SaaS product

    I am not arguing that everybody should stop using Google Docs tomorrow.

    There are good reasons to use hosted services.

    Collaboration is one of them.

    Reliability is another.

    Backups, authentication, email delivery, global infrastructure and many other things are genuinely difficult problems.

    Sometimes paying somebody else to solve them is absolutely the right decision.

    The point is something else.

    We should have the choice.

    If the problem can be solved by software running on our own hardware, then we should be able to do that.

    And “our own hardware” does not necessarily mean buying a server.

    It can mean a €5 or €10 monthly virtual machine in the cloud.

    The cloud is not the enemy.

    The real problem is confusing infrastructure with software.

    Maybe the future is not more SaaS

    For years, the direction of the web has been clear: move everything online and let someone else run it.

    Maybe there is another direction worth exploring.

    Move the infrastructure online, but keep control of the software.

    Rent the server.

    Own the applications.

    Choose what runs there.

    Upgrade when you want.

    Remove what you do not need.

    Build your own environment.

    That is one of the ideas behind OpenStation that I find particularly compelling.

    If web technologies are capable of producing full applications, then a web application does not have to mean a website that belongs to somebody else.

    It can simply be software.

    And if you have a server, whether it is sitting under your desk or running in a cloud provider, there is no fundamental reason why that software cannot be yours.

    That is the distinction I think we have forgotten.

    Maybe we do not need to rent software.

    Maybe we just need to rent the computer it runs on.

  • Daniel López Avatar

    Juan Lentino Embraces OpenStation

    One of the things we love most about open source is seeing developers choose to build together.

    Juan Lentino is a great example.

    Juan is the developer behind Signal & Noise Tools, a powerful open source WordPress plugin that brings together SEO, analytics, security, AI tools, content tooling, and much more.

    He has already contributed a couple of fixes to our AI engine, helping make OpenStation better.

    But what really made us smile was seeing Juan embrace OpenStation in his own work.

    He has adapted Signal & Noise Tools to work with OpenStation, integrating his plugin with the platform and making it part of the growing OpenStation ecosystem.

    And that is exactly what we hope to see from open source.

    Not just people using software, but people taking it, building with it, and making it their own.

    Juan did not just contribute code to OpenStation.

    He chose to build with OpenStation.

    And honestly, that is pretty damn cool.

    Thank you, Juan, for contributing to the project, for building Signal & Noise Tools, and most importantly, for embracing OpenStation.

    This is what open source is all about.

  • Daniel López Avatar

    OpenStation 1.1 is out

    OpenStation 1.1 is ready to download. This release is mostly about one idea: the desk should be quiet, and everything you need should be in one place. So we moved the navigation into a single dock, we redesigned the Preferences panel, and we fixed a long list of small things that were making the shell feel less solid than it should.

    Here is what is new.

    One dock for everything

    Until now the navigation was spread around. Some things lived on the wallpaper, some in the dock, and some were still in the old WordPress admin bar that we hide by default. The jobs of that bar never really moved anywhere.

    Now there is a new desktop layout, and you can pick it from OpenStation Preferences, in the Appearance page. Every menu lives on the bottom dock. The dock sorts itself so the WordPress core menus come first and the plugin menus come after, and it draws a divider between the two groups. You can still drag tiles to reorder them inside their own group.

    Hover a tile and the submenu opens

    This is my favourite part of the release. In the other layouts, when a menu has children, the dock forgets about them: you click the tile, the landing page opens, and the children are only reachable from the tab strip inside the window.

    Now, when you hover a menu tile, a small panel opens above it. It shows the page itself, the windows you already have open for that menu, and one row for each submenu entry. So you can go from the dock straight to “Categories” or “Add New Post” without opening the parent page first.

    It works with the keyboard too. Press the up arrow on a tile to open the panel, move with the arrows, use Home and End to jump, and press Escape to close it and go back to the tile.

    The System tile

    The old admin bar did some useful things, and those things needed a home. There is a new System tile in the dock with a hover menu: OpenStation Preferences, View site, Fullscreen, Keyboard shortcuts, Report a bug, Install web app and Log out.

    This also cleans the dock a lot. Nine separate glyphs became one tile. And two of those actions, keyboard shortcuts and fullscreen, did not even work anymore, because they were still attached to buttons that are not on the page. Now they are part of the shell.

    There is also a new Overview tile, for the same surface you already open with the up arrow.

    The assistant gets a notch, not a bar

    The site assistant now lives in a small pill at the top centre of the screen, floating above your windows.

    We did not want to give it a tile, and we really did not want to give it a bar. A bar that takes height forever is exactly what OpenStation removed from wp-admin in the first place, and putting it back with a nicer design would be the same mistake. The notch never reserves working area. It is just there when you need it.

    Window tabs look like real tabs now

    The sub page strip inside a window used to be flat text with a coloured underline, sitting on a bar of the same colour as the title bar. It read like loose text floating in the chrome.

    Now the active tab is a plate. It wears the same colour as the page below it, and the two corners are joined to the page, so the tab and the content look like one continuous surface. A frosted crown sits on top of it, and a thin line traces the whole shape, up the tab and back down to the page.

    The plate also slides. It is one single element that travels from one tab to the next, instead of one fill turning off here and another turning on there. That sounds like a detail, but a fill that switches has to cross fade a dark tab into a light one, and every frame in the middle is a grey that belongs to nothing.

    We also removed the small activity dot that every window carried in its title bar. It was painted all the time to report a state that is true almost always.

    Preferences, redesigned

    The tab strip in OpenStation Preferences was full. Eight tabs measured 1178px inside a 1180px window, and plugins can register their own tabs, so there was no room left to grow.

    The tabs moved into a left sidebar, with a search field at the top. While the labels were moving anyway, we regrouped the pages: the Dock now has its own page for size and style, and Windows has one for corners and for everything that used to be under Effects.

    The controls got a pass too. Checkboxes, radios, the switch, the slider and the segmented control now use the flat accent colour when they are on, so they follow the accent you picked. The iridescent mesh stays reserved for the places where it means something. And the select control finally opens its own menu instead of the browser one, so the open menu matches the closed one, with keyboard support and type ahead.

    Notes are one thing now

    There were two note surfaces: sticky notes and pinned notes. The sticky ones were built on an experimental Gutenberg feature that was renamed, so they simply stopped working, and we had one dead surface next to a working one.

    Sticky notes are gone, and the two good things they had moved into pinned notes: you can create a note by right clicking the wallpaper, and the note is placed where you dropped it. Notes also have a trash button now, and dragging a note to the bin works as you expect.

    You decide where the Trash lives

    The recycle bin used to register a dock tile and a wallpaper icon for the same window, so it appeared twice. A desktop icon should be something you put there, not something that appears alone.

    Now the Trash has one tile, and you choose where it goes: on the dock, on the wallpaper, or hidden. Mio, our desk companion, works the same way, and the two choices are independent.

    Real operating system windows (experimental)

    This one is still an experiment, but it is fun. With an optional extension, every window menu gets a new row: “Send to your Mac”, “Send to your Windows PC” or “Send to your Linux desktop”. When you pick it, the window leaves the OpenStation desk and opens as a real window of your operating system, with its own icon in your dock and its own Alt Tab slot. Close it and it comes back to the desk.

    OpenStation stays a web application, and nothing about it depends on this. Everything specific to the desktop app lives in a separate plugin.

    Two smaller things came from this work, and both are useful on their own. Plugin authors can now add their own rows to the window menu, and there is a new mode that boots the shell showing exactly one window, with no dock, no taskbar and no wallpaper. That is handy for an embed, a kiosk or a shortcut of your web app.

    The assistant is more reliable

    The assistant used to stream its answer over a live connection. That connection drops on many hosts and behind some proxies, and the user only saw “Lost connection to the assistant”. We removed the streaming transport and now the assistant answers over a single request. You see “Thinking…” until the answer arrives, and it works everywhere.

    Closing the panel now cancels the request, so an answer cannot land in a panel you already closed. The server also gets more time for long answers, so a slow search does not end as a generic network error. And the whole assistant overlay is translatable now.

    Accessibility and small fixes

    • A good part of this release is not visible at all.
    • Window control buttons had no accessible name, so Minimize, Maximize, Fullscreen and Close were all announced as unnamed buttons. They have names now.
    • A window with no sub pages does not announce an empty tab list anymore, and the loading overlay is announced instead of being hidden.
    • Toasts do not disappear while you are hovering them or while your focus is inside them. An action button can not be removed under the hand that is going for it.
    • In the confirm dialog, Enter now runs the button that has focus, not always the confirm one. The dialog also traps the focus and gives it back when it closes, and on a dangerous action it starts on Cancel.
    • The first open dialogs of the Posts, Pages, Users, Plugins and Comments windows are gone. Those windows are opt in now, so a dialog explaining how to turn the window off, right after you turned it on, made no sense.
    • Two settings bugs that were losing your changes in silence: mid save toggles are no longer dropped, and a session only sends the settings it actually changed, so a second tab can not revert your wallpaper.
    • If you deactivate OpenStation from the classic plugins page inside a window, the shell now notices and exits, instead of running on top of a plugin that is no longer loaded.
    • Fullscreen is preserved when you leave Overview, the Agents section is always visible in WP Explorer, and the welcome panel does not open a stray window when you dismiss it.

    Get it

    OpenStation 1.1 is available on WordPress.org, and you can update from your plugins page like any other plugin. If you find something broken, the Report a bug entry is in the System tile, which is now the fastest way to reach us.

    Enjoy the new OpenStation!

  • Miguel Torres Avatar

    How a boring notification became a spinning record

    When Daniel asked me to join this project (still called Desktop Mode then), he told me to focus on fun. For a first contribution, that turned out harder than I expected. Here’s how my first piece of work went.

    OpenStation turns every wp-admin screen into its own window. This caused an unwanted side effect: WordPress prints its “update available” notice on every screen, so the same nag showed up in every window I had open.

    Screenshot of multiple OpenStation windows showing a WordPress update notice repeated across all windows

    The job was to hide it inside the windows and show it once on the desktop. My first version did exactly that, as a plain toast.

    A WordPress update notification

    It worked, but it was forgettable. So I stopped asking how to show a notification and started asking how to make someone smile when they saw it. A pile of rough ideas followed:

    Exploration of a notification coming out from an envelope
    Exploration of a notification showing up from a bouncing dock icon
    Exploration of a notification appearing after a shooting star animation

    None of them clicked, until I remembered something about WordPress itself.

    The idea

    Every major WordPress release is named after a jazz musician and ships cover art styled like a vinyl sleeve (e.g. 7.0 is “Armstrong”, after Louis Armstrong). Lovely, and almost nobody sees it. So I made the notice out of it:

    Final animation of the WordPress update notice displaying a spinning vinyl record

    Same job as that first boring toast. It just spins now. If it makes someone smile the next time their site nags them to update, it did its job.

  • Daniel López Avatar

    Lienzo: A Free, Open Source Photoshop Alternative for WordPress

    What if your WordPress media library had a powerful, free and open source image editor built right into it?

    Meet Lienzo, a modern image editor created for OpenStation.

    Lienzo brings many of the tools you would expect from professional image editing software, without leaving WordPress. Crop, resize, rotate, adjust colors, use curves and levels, sharpen, blur, add text, draw shapes, work with layers, select parts of an image, clone, paint and much more.

    It is designed to feel familiar to anyone who has used Photoshop or another professional image editor, while remaining completely open source.

    A real Photoshop alternative

    Lienzo is not just a basic WordPress image editor.

    It includes 18 different tools, including layers, brushes, magic wand, magnetic lasso, clone stamp, retouching tools, dodge and burn, gradients, shapes, paths, text, crop and transform, curves and levels, blur, sharpen, grain, vignette and more.

    It also supports non-destructive editing, meaning your original image is never overwritten.

    Open source tools for OpenStation

    This is one of the things that makes OpenStation special.

    We don’t just want to create a new interface for WordPress. We want to build a growing ecosystem of powerful, free and open source applications that work together inside OpenStation.

    Lienzo is one of those applications.

    It brings professional image editing directly into your WordPress workflow, turning your media library into something much more powerful.

    Coming to WordPress.org

    Lienzo is currently under review for the official WordPress.org plugin repository.

    If everything goes as planned, it will be available within the next week.

    So if you’re looking for a free image editor, an open source Photoshop alternative, or a powerful image editing tool for WordPress, keep an eye on Lienzo.

    Free. Open source. Powerful. Built for WordPress.

    And this is only the beginning of what OpenStation can bring to WordPress.

    Explore Lienzo on GitHub

  • Daniel López Avatar

    OpenStation Windows… On Your Mac

    Last week, our friends at WP Builds dedicated a little part of their wonderful TWiW (This Week in WordPress) podcast to version 0.9.6 of what was, at that time, called Desktop Mode.

    It made us incredibly happy.

    Actually, we started that morning with a huge smile and a lot of motivation. Having people we respect talk about something we have been working so hard on is a really special feeling.

    So, thank you very much for the mention! ❤️

    But here is the funny part.

    Just a couple of days ago, we released version 1.0.

    And with it came a rebrand.

    Desktop Mode is now OpenStation.

    New name, new look, new identity… and a lot of new things.

    So much has changed

    When we look at the version that WP Builds had in their hands and compare it with what is now in our repository, it almost feels like decades have passed.

    But it has only been a couple of weeks.

    The speed of this team has been incredible. We are so passionate about this project that sometimes it feels like there is no clock, no deadline and no barrier that can stop us.

    OpenStation 1.0 is not just a new name. It brings a completely new visual identity, new desktop themes, new interactions and many improvements across the whole experience.

    We introduced Mio (you can see it around this blog), our little soft-body companion who moves around your desktop and gets pushed by your windows.

    We updated the old “My WordPress” to a new WP Explorer, where custom post types can appear as folders, and post tiles can now use their featured images, turning your WordPress content into something that feels much more like a visual file system.

    And then there is WooCommerce.

    Orders, Products, Coupons and Customers can now be explored as folders. You can see stock information, prices, order totals and line items, and even navigate between customers, products and coupons.

    There is also multi-selection across the desktop and folder windows, better drag and drop, improved window management, new animations, a redesigned comments experience, better previews, new themes and much more.

    We also introduced an AI Agents framework, with agents represented as WordPress users, persistent conversations, abilities, drag & drop interactions and more.

    And, of course, we spent a lot of time fixing things. A lot of things.

    The full changelog is huge, and honestly, it would probably be a little unfair to make you read all of it here.

    But the important thing is this:

    OpenStation 1.0 feels very different from the Desktop Mode that appeared on TWiW just a week ago.

    And that brings me to something else.

    You challenged us

    There was one particular part of your podcast that gave us a feeling that we couldn’t really resist.

    It felt like a challenge.

    The idea came from your colleague Alex Standiford from Siren Affiliates.

    And, well…

    We couldn’t leave it alone.

    So, without further delay, we got to work.

    OpenStation… on your real desktop

    One of the ideas discussed was the possibility of taking an OpenStation window outside of WordPress and onto your real desktop.

    So we built a proof of concept.

    Using Electron, we made it possible to take an OpenStation window and bring it directly onto your Mac desktop.

    This is still a proof of concept, and there is a lot to figure out before something like this becomes part of OpenStation.

    But it works.

    And honestly, seeing an OpenStation window sitting next to our other Mac applications was one of those moments where we just looked at each other and thought:

    “Okay… this could be really interesting.”

    So, Alex, WP Builds… you might want to be careful about what you challenge us with. 😂

    We hope that when this new capability eventually arrives, it will leave you just a little bit more amazed.

    And maybe, just maybe, you’ll have to give us another few weeks before you recognize OpenStation again. 😄

    Thank you again to everyone at WP Builds for the mention, for the challenge, and for giving us another reason to keep pushing OpenStation forward.

    This is only the beginning.

  • Daniel López Avatar

    Meet Mio, the new mascot of… OpenStation! 💜

    Mio is fun, playful, and surprisingly advanced from a technical point of view. We’ve put a lot of love into creating Mio. Nuria came up with the original idea, and the rest of the team brought her to life with personality, animations, and plenty of care.

    Very soon we’ll release the biggest update we’ve ever made. This release is much more than a collection of new features: it’s also the beginning of a new identity. Desktop Mode is becoming OpenStation.

    Why OpenStation? Because it represents much more than a desktop interface. It’s an open workspace where WordPress becomes a complete environment for creating, managing, and building things, just like a real workstation, but powered by the web.

    Right now, Mio is purely cosmetic. Mio uses real-time soft body physics, making Mio feel alive as Mio moves around your workspace.

    Of course, Mio is completely optional. You can disable Mio or never see Mio at all. We believe software should be both productive and enjoyable, with customization extending beyond workflows and into the entire experience.

    And this is only the beginning.

    Mio will continue to evolve and will eventually interact with you in ways that simply weren’t possible before. Modern web technologies let us rethink what a web application can be, and sometimes, they make ideas that once felt impossible become reality in the blink of an eye.