#Optique 1.0.0 preview: runWithConfig() is gone—run() now accepts source contexts. Meta command config gets independent command/option sub-configs. bindConfig() gains config-file metadata for path resolution.
#TypeScript #CLI
#Optique 1.0.0 preview: runWithConfig() is gone—run() now accepts source contexts. Meta command config gets independent command/option sub-configs. bindConfig() gains config-file metadata for path resolution.
#TypeScript #CLI
I always appreciate your open source contributions, not just to Fedify or Hollo, but to the social web as a whole!
The really cool thing about this new architecture is that it can enable Client to Server architecture for AP with fedify (maybe vocab packages could be used in the browser too!)
Fedify 2.0.0—the biggest release yet!
• Modular package architecture
• Real-time debug dashboard
• ActivityPub relay support
• Ordered message delivery
• Permanent failure handling
Breaking changes included—see the migration guide before upgrading. Full release notes are on GitHub.
fedi.blue 라는 도메인을 샀는데 뭔가 아이디어가 안 떠오르네요... 블스랑 연합우주 모두에서 사용 가능한 앱이었으면 좋겠는데... 혹시 아이디어가 있으신 분은 편하게 말씀해주시면 감사하겠습니당 알티도 감사해요!
Interesting to see combinator conditions on #typescript for CLI.
This is something that's hard to do in any CLI library. Easier with typed languages, but still can be complex. Very cool to see with #optique and their approach leveraging the type system. 😎
Optique 0.10.0 is out—the largest release yet for this type-safe TypeScript CLI parser.
Highlights: runtime context system, config file integration, man page generation, inter-option dependencies, 11 network value parsers.
Last pre-release before 1.0.0.
We have the pleasure of having @hongminhee.org who will give a presentation about @fedify.hollo.social.ap.brid.gy "an opinionated #ActivityPub framework for TypeScript that handles the protocol plumbing"
It is an open free event and everyone is welcome!
AI企業がF/OSSコードでLLMを訓練することを止めるのではなく、訓練したモデルを公開するよう要求すべきだと思います。
撤退ではなく、再専有。GPLがそうだったように。
訓練コピーレフトについて書きました:「F/OSSの唯物史観——LLMを拒絶するのではなく、取り戻すべきだ」
Hot take: We shouldn't block AI companies from training on our F/OSS code.
We should require them to free the models they train.
That's not naïve idealism—it's the same strategy that built GNU/Linux. Why training copyleft might be our GPL moment:
LogTape 2.0.0 released! A zero-dependency logging library for JavaScript/TypeScript.
New in 2.0: lazy() for dynamic context values, config from JSON/YAML files, direct Error logging, async lazy evaluation, time-based log rotation, Elysia integration, and more.
Hongdown 0.2.0 released! Hongdown is an opinionated Markdown formatter written in Rust, now available as a WebAssembly library for Node.js, Bun, Deno, and browsers.
New: smart sentence case for headings, SmartyPants-style typography, external code formatters, and directory batch formatting.
if people no longer read the code, API is no longer targeting humans, is there still a need for "good API design"? is it still worth the effort to figure out what would be the best for users, instead of the best of ai to understand/use? I don't know.
CLIツールを作ってると、「--repoで指定したリポジトリのブランチだけ補完候補に出したい」みたいな場面があるんですよね。でも普通のCLIパーサーだと各オプションが独立してて、これが意外と難しい。
TypeScript向け型安全CLIパーサーOptiqueで、この問題を解決する仕組みを作ったので、記事にまとめました。
When building CLI tools, shell completion usually treats each option in isolation. But sometimes valid values for one option depend on another—like branch names depending on which repository you're targeting.
Wrote about how I solved this in Optique, a type-safe CLI parser for TypeScript.
Une lib de logging pour JavaScript qui ambitionne d'ajouter du logging facilement à vos packages. Ensuite, libre à l'utilisateur de votre package de décider s'il veut activer le logging ou pas.
Ça me fait un peu penser à log4j pour Java 🤔
🔗 https://logtape.org/
#JavaScript #lib #log
How do you make one CLI option's value affect another's validation and completion? Like `git -C <path> branch <TAB>` completing branches from that path.
I think I've found a nice solution for Optique: topologically sort dependencies between value parsers.
Turns out writing markdownlint rules was the easy part. Actually *fixing* all those lint errors manually? That was unbearable.
So I did what any reasonable person would do: rewrote the whole thing as an auto-formatter. Meet Hongdown—now you can enforce my peculiar Markdown style without the pain.
The implicit theory behind the open social web was that platform quality would determine outcomes. Build something that’s better, and in combination with the incumbent getting worse, this would lead to such difference in quality, user experience and safety that at some point people would switch from X to alternatives like Mastodon or Bluesky. This theory held up for a while in 2023 and 2024. In 2025 it started to falter, as Musk aligned himself with Trump, the signup waves to the alternative platforms effectively stopped. In early 2026, this theory is now really over, because X has fundamentally changed. Mastodon and Bluesky are not in competition anymore with the platform X, because X has changed. It changed from being a platform to the power structure for the neo-royalty, with the public square shambling along as a zombie, animated by everyone who still treats X like it’s 2015. You cannot out-compete ‘where the ruling faction radicalizes and coordinates’ by having better moderation policies or algorithmic choice. X is not a platform problem anymore, it is a power problem, and building a different platform does not solve the power problem.
New from me: X is A Power Problem, Not a Platform Problem
https://connectedplaces.online/reports/a-power-problem-not-a-platform-problem/
Sentry just dropped a blog post on “Trace-connected structured logging with LogTape.”
It's incredibly rewarding to see the library getting this kind of recognition from the industry leaders in observability. A huge milestone for the project.
I finally gave in and wrote my own markdownlint rules to enforce my peculiar and stubborn Markdown style. Probably no one else will ever need these, but I've published them as open source anyway.
Wrote a tutorial on building CLI apps with Optique, a TypeScript CLI parser I've been working on. If you've ever wanted discriminated unions from your argument parser, this might interest you.
Optique 0.9.0 released! Two big features:
• Async parsers: validate against databases, APIs, or filesystems with full type safety
• New @optique/git package: validate branch names, tags, and commits against real Git repos
All backward compatible. Existing code works unchanged.
複数のパーサーを合成するとき、一つでも非同期なら結果も非同期になる——これをTypeScriptの型レベルで表現するのが意外と難しかった。Optiqueでの設計過程を書きました。
今日のZennトレンド
2026年版:JavaScript/TypeScriptのロギング入門
この記事は、JavaScript/TypeScriptにおける効果的なロギング方法を解説しています。
console.logの限界を指摘し、軽量で多機能なロギングライブラリLogTapeの導入を提案。
ログレベル、カテゴリ、シンク、構造化ログといったロギングの基本概念を説明し、LogTapeを用いた具体的な設定方法や活用例を紹介しています。
本番環境での障害対応や効率的なデバッグに役立つロギング環境構築のヒントが得られます。
https://zenn.dev/hongminhee/articles/e0d19ae2c4e042
本番環境での障害時に役立つログ構築について解説します。
console.logの限界を整理し、実用的なロギング環境の構築方法を紹介します。
LogTapeという依存ゼロで軽量なロギングライブラリを使用します。
Wrote about designing type-safe sync/async mode support in TypeScript. Making object({ sync: syncParser, async: asyncParser }) automatically infer as async turned out to be trickier than expected.