OwainWilliams

Activity

Stars and mentions · Last 30 days, Oct 7 – Nov 5

GitHub stars0
Mentions1
01234Oct 7Oct 21Nov 5
UTC days · repositories OwainWilliams owns1 repository

Top repositories

OwainWilliams’s repositories ranked by pull request authors, as on trending.

Loading

Contributes to

Repositories outside OwainWilliams’s account where OwainWilliams opened or reviewed pull requests in the past 365 days.

Who noticed OwainWilliams

Everyone who starred or forked OwainWilliams’s repositories since the archive began in 2011.

Notable accounts

Ordered by the stars their own repositories have received.

Biggest fans

Accounts that starred the most of these repositories.

Breakout weeks

Each repository’s best week of new stars, with the release published around it.

Mentions

2posts
Nov 61 post
  1. umbPublisher 1.7.4 umbPublisher 1.7.4: descriptions, settings search and a tidy up TL;DR. Two releases in one post. 1.6.0 added an optional Description property, so the description: in your note's frontmatter lands in the Umbraco property of your choice. 1.7.4 rebuilds the settings tab so every setting shows up in Obsidian's settings search, signs the release files, and tidies up a handful of things the Obsidian plugin review flagged. It needs Obsidian 1.14.4 or later. This post was published with it. <img src="owain.codes" alt="umbPublisher 1.7.0 mapping" width="500"/> Why For anyone who hasn't come across it, umbPublisher is an Obsidian plugin that pushes your notes into Umbraco 15+ as content, using the Management API. I write everything in Obsidian, so being able to publish from there rather than copy and paste into the backoffice is the whole point. Back in 1.5.0 I added tags. The tags in your frontmatter get mapped to an Umbraco Tags property, and that's been working nicely. But most blog document types have another field that's crying out for the same treatment: a description. Whether it's used for a listing page, search results or the meta description, it's a short summary that I'd already written in my note and then had to copy into Umbraco by hand after publishing. Not any more. Descriptions (1.6.0) Add a description to your note's frontmatter: --- title: My post description: A short summary of the post. tags: - Umbraco --- Then in Settings > umbPublisher: 1. Click Fetch properties to load the properties from your document type. 2. Pick your property from the Description property dropdown. It sits right under Tags property, in the Optional properties section. That's it. Next time you publish, the description goes along with the note. If you don't want to use it, leave the dropdown on [None] and nothing changes. Notes without a description are fine too. The property just gets left empty. Your property, your choice Tags were easy because Umbraco only has one way of storing them. Descriptions aren't like that. Some sites use a plain text area, some use a markdown editor and some use a rich text editor. So rather than forcing one, the plugin looks at the property you picked and sends the value in the shape that editor expects: | Property editor | What gets sent | |---|---| | Text area or text box | the description, exactly as written | | Markdown editor | the description, exactly as written | | Rich text editor | the description, HTML escaped and wrapped in a paragraph | One thing to be aware of is that the description is always treated as plain text. If you write markdown or HTML in it, it isn't converted. Sent to a rich text property, a < or an & shows up as exactly that, rather than breaking your markup. A description is meant to be a sentence or two, so I kept it simple on purpose. It works whether you're using Property Editor, Block List or Block Grid mode. It always goes on the document itself, never inside a block, the same as the title and tags. A couple of gotchas - Text box length. Umbraco's text box property has a 512 character limit by default. If your descriptions run long, map them to a text area instead, otherwise Umbraco will reject the document. - Don't double up. You can't choose the same property for the description as you've used for the title, content or tags. The plugin checks this before publishing and tells you if you have. Settings you can actually search for (1.7.4) Obsidian 1.13 introduced a new way for plugins to describe their settings, and with it came a warning on umbPublisher: its settings wouldn't appear in Obsidian's settings search. Fair enough. Type "client secret" into the search box and you'd get nothing, which isn't great when that's exactly the thing you're hunting for. So I rebuilt the settings tab on the new API. Every setting is now searchable, including a few extra search words so "credentials", "frontmatter" or "description" all find the right row. The settings are also grouped under headings now: - Umbraco connection. Website URL, client ID and client secret. - Content location. The parent node and the document type to create. - Content mode. Property Editor, Block List or Block Grid. - The settings for your mode. Title and content for Property Editor, or the block property, element type and content property for Block List and Block Grid. - Optional properties. Tags and description. Everything works the way it did before. The Fetch buttons, the dropdowns and your saved settings are all exactly where you left them, just easier to find. A tidy up from the plugin review (1.7.4) The Obsidian plugin review turned up a few things worth fixing, so I fixed them. - Signed release files. Each release now comes with GitHub artifact attestations for main.js, manifest.json and styles.css. If you like to check what you're installing, you can verify a download with gh attestation verify main.js --repo OwainWilliams/umbPublisher. - No more scanning your vault. To find the images in a note, the plugin used to fall back to listing every file in your vault. It now asks Obsidian to resolve the link, the same way Obsidian does when it displays the image, and only ever looks at the images you've actually embedded. - Better GUIDs. The IDs for new documents and blocks are now generated from proper cryptographic randomness rather than Math.random. There was even a helper sitting in the code for this that was never used. Oops. - Housekeeping. I swapped out a deprecated Obsidian API and cleared out some unused code, so the linter is finally happy too. Upgrading Update the plugin and you're done. Your existing settings are kept, and the Description property starts off as [None], so nothing changes until you pick one. The one thing to know is that 1.7.4 needs Obsidian 1.14.4 or later. If you're on an older version of Obsidian, you'll stay on umbPublisher 1.6.0, which still has the description feature. Update Obsidian and 1.7.4 will be waiting for you. Thanks If you're using umbPublisher, I'd love to hear how and please give it a star on GitHub . If there's another field you'd like mapped from your frontmatter, or something isn't working, open an issue on GitHub. That's genuinely how features like this one end up getting built.

  2. Beta Blast: A Bouldering Bubble Shooter Built with Claude I asked Claude for a Puzzle Bobble clone. It built a climbing game with a global leaderboard. Beta Blast: shoot coloured climbing holds at a wall, pop three or more, send the route. Playable in your browser right now, free, no install. !Beta Blast gameplay It started with one question: "What's a good tech stack to make a replica of Puzzle Bobble?" A few hours of chatting later I had a finished, deployed game. I wrote none of the code and that's OK. What's in it - 🧗 Endless grades. V0, V1, V2 and on, getting harder with no ceiling - 📅 Daily Boulder. One route a day, the same for everyone - ⏱️ Survival. The wall keeps dropping, the music speeds up, and the stages ramp up - 🛠️ Route Setter. Build your own wall and share it as a link - 👥 2-player over the internet. Pop holds to send rows to your opponent - 🏆 A global leaderboard, with a climber icon next to every score - 🧢 Customisable climber. Beanie, shirt and chalk bag colours unlock as you play - 🔌 A public API and a one-line embed, so any website can show the leaderboard !The leaderboard The stack | Part | What it uses | |----|----| | Game | TypeScript, Phaser 3, Vite | | Art and sound | Drawn and synthesised in code. There are no image or audio files. | | 2-player | PeerJS (WebRTC), so no game server | | Leaderboard | Cloudflare Workers + D1 (SQLite), on the free plan | | Hosting | GitHub Pages and a custom domain, deployed by GitHub Actions | | Quality | 236 tests, a bot that plays every grade to check the difficulty, and CI on every pull request | Why it was fun I made the creative calls, Claude did the typing. I picked the theme (climbers shooting holds), the name, and which feature came next. Claude proposed options, built them, and opened the pull requests. I mostly said "yes, do that." It checked its own work. It ran the game in a headless browser, looked at its own screenshots and fixed what looked wrong. When I asked for a full review it found real bugs, such as a network blip that ended live matches, and fixed them. It handled the boring, essential parts. Tests, CI, deploys, the Cloudflare setup, the README and the screenshots in it. Anti-cheat was a good problem. Scores come from the browser, so anyone can fake one. The game now records every shot and can replay a run on the server through the same engine to check the score. It's off on the free plan, because a replay costs more CPU than the free tier allows. Claude measured that, told me, and let me pick. That kind of trade-off is what I'd want from a human colleague too. The honest bits - It wasn't one prompt. It was a long conversation, with me playing the game and steering. - Things broke along the way: a deploy that needed Pages switched on, a leaderboard that looked empty because it opened on the wrong board. We fixed each one. - Claude can't tap a real phone screen or feel whether a shot is satisfying. That part is still me. Try it 🎮 Play: thesecretstage.vip 💻 Code: OwainWilliams/Beta-Blast Add the leaderboard to your own site with one line: <script src="https://thesecretstage.vip/Beta-Blast/embed.js" data-board="daily" async></script> If you've been sitting on a "wouldn't it be cool if" project, this is your sign. Open a conversation, describe it, and see how far an afternoon goes. I've a load of other features I want to add to this, one will be an Umbraco themed version, a 4 player version and maybe some other features that I liked from old online games such as TetriNet (anyone else remember that?) If you have a feature you'd like to see, create an issue on the repo and we can chat about it.

Achievements

Awards earned by the repositories OwainWilliams owns. Select an award to embed its badge.

No awards yet

Repositories earn awards by reaching the top three in a completed trending day or week.

A repository earns an award for finishing first, second or third in a completed trending day or week, ranked by new stars, new forks or pull request authors. Awards follow a repository through renames and transfers and count toward its current owner. Weeks run Monday to Sunday, UTC.