Clairvoyance has helped me fix bugs in my app and add new features, but it's also helped with my imposter syndrome. I'm not a professional developer and I suffer from crippling self-doubt, and so I often assume that the issues I encounter are my fault. But I discovered something reassuring when I reviewed the code that Clairvoyance had created to handle multiple documents and tabs in WinUIpad: Much of the code and architectural design it used was my own.
Yet another reminder of how we got here
If you go back and review the articles I wrote a year or more ago about implementing multiple documents and tabs in the WPF version of this app, called .NETpad, you will find that I first started working on the underlying architecture for this work in late 2024. I created a C# class called DocumentTab to handle per-document state, meaning data like the document's name, whether it's saved, whether its contents has changed, and so on. DocumentTab evolved over time, of course, but I had the basics down about a year and a half ago.
My goal for this app in 2025 was to implement the multiple document/tab functionality. But that didn't happen, in part because of limitations in WPF—most notably, its tab controls were designed for the tabbed dialogs of the early 2000s, and not for multiple document apps like mine—and in part because I then decided to migrate over to the more modern (but terrible) Windows App SDK and WinUI 3. And that required significant effort, research, and learning. Still does.
What I ended 2025 with was frustration. Yes, the Windows App SDK and WinUI 3 let you make a modern looking app, thanks to the native support for Windows 11 controls and styles. But the Windows App SDK also lacks many of the features my app needs that are supplied by WPF. And so I kept finding myself stumbling over the basics, having problems with things I had solved in other frameworks a long time ago. It was one step forward, one step back.
Fundamentally, I had to tie each document to a tab and ensure those two things stayed in sync, and I somehow had to do this using a framework, the Windows App SDK, which seemed uniquely unable to properly handle basic events like what happens when the user switches tabs. So I was curious to see whether Clairvoyance could solve this problem. And then when I saw that it had, I was curious how it had solved this problem.
The design of Notepad is a riddle wrapped in an enigma
Think about Notepad in Windows 11 and the interaction between the tabs at the top of the app and the text box at its center. Each tab is associated with text in the text box, but those tabs are also separated from the text box with a menu bar.
In the Windows App SDK, the TabView control is a container: It contains tabs (TabView controls), of course, but also other items like a header, which can include an icon as per Notepad (and WinUIpad), and a footer with the "Add new tab" button. But each TabView control is also a container: It can contain...
With technology shaping our everyday lives, how could we not dig deeper?
Thurrott Premium delivers an honest and thorough perspective about the technologies we use and rely on everyday. Discover deeper content as a Premium member.