HNHacker News
TopNewBestAskShowJobs

leleat

62 karma · joined September 4, 2025

My personal blog: https://neverready.app/blog/ My GitHub profile: https://github.com/leleat
submissionscomments
leleat··on .gitignore Everything by Default
You don't need to put the scratch directory in the committed gitignore file. gitignore files are recursive. So a common approach is to use a gitignore with * in the scratch directory.
leleat··on GUIs should be fully keyboard-driven
I don't think this really addresses GP's comment as far as I understood it.

Your resource mostly describes how to make keyboard-based workflows accessible. But just because the full functionality of an app is keyboard accessible, doesn't mean that it works as well as the pointer-based approach - especially if you have an app with multiple menus, sidebars, headers, footers etc. Maybe you could tab through everything, but a pointer will be faster. This is where a "keyboard-first UX concept" is missing (from GP).

I think an interesting idea to solve this would be a "focus navigation mode". Enter this mode with 1 shortcut and then navigate between items with a few keys; like a combination of mnemonics and screen reader navigation e.g. jump between headers with "h" etc.

leleat··on 2x, not 10x: coding with LLMs in 2026
Someone posted their AGENTS.md some time ago, that is used in practice to teach their students[1]. That might be useful to you in this context as well.

[1]: https://news.ycombinator.com/item?id=48359858

leleat··on Deno Desktop
> Shared CEF runtime across apps. Every app currently bundles its own CEF copy. A managed shared runtime would drop binary sizes to a few MB per app. On the roadmap.

This[0] sounds interesting. I am not familiar with CEF, so I wonder how the versioning works. When different apps require different versions of CEF, do we just essentially end up with the electron model where every app bundles their own browser (just slightly less bad). Or is there still an advantage to a "shared runtime" in that case?

[0]: https://docs.deno.com/runtime/desktop/comparison/

leleat··on .gitignore Isn't the only way to ignore files in Git
There is also

  git update-index --[no]-skip-worktree
for files that are already tracked. This can be useful for some local experimentation... it's just a bit annoying to use because it's not really surfaced anywhere by git (kinda). You need to remember that you set it; otherwise other operations like checkouts may be blocked.
leleat··on GitHub Stacked PRs
If I understood you correctly, you want to propagate changes in a branch to other branches that depend on it? Then --update-refs is for you[1]. That way, you only need to update the "latest" branch.

[1] https://andrewlock.net/working-with-stacked-branches-in-git-...

leleat··on Ask HN: What are you working on? (February 2026)
https://github.com/Leleat/git-forge

From the README: "[git-forge is a] simple CLI tool for basic interactions with issues and pull requests across GitHub, GitLab, Gitea, and Forgejo".

Right now, I am looking into better testing. Currently, I do testing by mocking the forge APIs and then running git-forge against them with TypeScript. But not everything is testable that way. The TUI is pretty much untested. So I now want to port at least the tests to Rust (I am probably gonna leave the mock API in TS) and need to look into how to tests TUIs, which is a bit of a challenge since not only is Rust my first "systems programming language", I am also not knowledgable in Terminal/TUIs...

leleat··on Show HN: Vibe coding a bookshelf with Claude Code
On the other hand, we had this story[^1], where the maintainer of curl mentions a a bunch of actual useful reports by someone using AI tools.

[^1]: https://news.ycombinator.com/item?id=45449348

leleat··on Ruby core team takes ownership of RubyGems and Bundler
Technically, deno supports https imports as well

https://docs.deno.com/runtime/fundamentals/modules/#https-im...

leleat··on KDE is now my favorite desktop
The problem is that the extension experience can be really bad. There is no extension API; instead Extensions have (almost) full access to GNOME Shell's code.

This makes them incredibly powerful and flexible... but also fragile. Extensions can crash GNOME Shell/mutter. On Wayland that means your entire session goes down with GNOME Shell. Extensions can interfere with each other, and if you are an extension developer, you may need to update (or at least check) your extension every 6 months (GNOMEs release cycle).