Hello, I'm an open source software engineer in my late 30s living in #Seoul, #Korea, and an avid advocate of #FLOSS and the #fediverse.
I'm the creator of @fedify, an #ActivityPub server framework in #TypeScript, @hollo, an ActivityPub-enabled microblogging software for single users, and @botkit, a simple ActivityPub bot framework.
Fedify 1.6.2 has been released as a hotfix to address compatibility issues with certain Mastodon servers.
This release resolves interoperability problems with Mastodon instances running bleeding-edge versions that include RFC 9421 HTTP Message Signatures support. These versions contain a bug that causes 500 Internal Server Error responses when receiving RFC 9421 signatures, affecting communication with several major servers including mastodon.social.
The fix extends Fedify's double-knocking mechanism to retry requests with draft-cavage-http-signatures-12 when receiving 5xx error responses, in addition to the existing 4xx error handling. This ensures continued federation compatibility while Mastodon addresses the underlying issue in their implementation.
This is a temporary workaround that will be reverted in a future release once Mastodon fixes their RFC 9421 implementation and affected servers are updated. The change maintains backward compatibility and does not affect the behavior with servers that properly handle RFC 9421 signatures.
Users are encouraged to update to 1.6.2 to ensure reliable federation with affected Mastodon servers.
🚀MoonBit Beta is here! After 2 years of fast iteration, MoonBit enters its stable phase with regard to language syntax! ✨Built-in async 🛠 Fast tooling and IDE-aware error handling
@soomtong 이 表記는 <ruby> 태그를 利用한 것입니다. 제가 쓴 건 Hackers' Pub이 아니라 Hollo라는 ActivityPub 프로토콜 具顯 소프트웨어인데, Hollo에서는 國漢文混用體에 한글 讀音을 달아주는 機能이 있어서 自動으로 붙게 됩니다. Hackers’ Pub에서는 手動으로 <ruby> 태그를 쓰셔야 할 것 같네요. 😅
In case you've been waiting: the project hasn't been forgotten, @julian is just having a busy few months at the day job since April now. 😓 We'll probably be making more progress again later in the summer!
韓國語에 「念頭하다」라는 動詞는 없다. 「마음 속」이라는 뜻의 【念頭】라는 名詞는 있다. 따라서 「念頭해 두다」라는 表現은 잘못된 것이다. 풀어보면 「마음 속 해 두다」가 되는데 말이 안 된다. 「念頭에 두다」가 맞는 表現이다. 풀어보면 「마음 속에 두다」가 되므로 말이 된다.
LogTape is a zero-dependency logging library for JavaScript and TypeScript that provides a simple yet flexible logging system. It supports multiple JavaScript runtimes (Deno, Node.js, Bun, browsers, and edge functions), features hierarchical categories, structured logging, and offers seamless integration for both applications and libraries.
What's New in 0.12.0
Trace Log Level
LogTape now includes a trace severity level, which sits below debug in the verbosity hierarchy. This addition provides finer-grained control over logging output, particularly useful for detailed execution flow tracking during development and debugging.
All standard RFC 5424 facilities (kern, user, mail, daemon, local0–7, etc.)
Automatic priority calculation based on log levels
Structured data support for log record properties
Cross-runtime compatibility with Deno, Node.js, and Bun
Configurable connection timeouts, custom hostnames, and application names
Logger Method Alias
Added Logger.warning() as an alias for Logger.warn() to ensure consistency with the LogLevel type definition. This change addresses the naming mismatch where the LogLevel union type uses "warning" while the logger method was named warn(), making metaprogramming and dynamic method invocation more straightforward.
Unified Package Releases
Starting with version 0.12.0, all LogTape packages including @logtape/otel, @logtape/sentry, and @logtape/syslog share the same version number and are released together. This ensures compatibility between packages and simplifies version management for users.
Improved Build Infrastructure
LogTape has migrated from dnt to tsdown for npm package bundling. tsdown is a library-focused bundler built on top of Rolldown, a Rust-based bundler that powers the next generation of Vite. Unlike general-purpose bundlers, tsdown is specifically optimized for building TypeScript and JavaScript libraries with minimal configuration. This change brings several benefits:
Elimination of bundler warnings in Webpack, Vite, and other build tools
Improved compatibility with modern JavaScript toolchains
Better tree-shaking support
Cleaner package output
Faster build times through Rust-based performance optimizations
Migration Guide
Updating to Trace Level
If you have code that relies on debug being the lowest severity level, you may need to update your log level configurations:
// Before{ lowestLevel: "debug" } // This was the most verbose setting// After{ lowestLevel: "trace" } // Now includes trace messages
Leveraging Buffer Configuration
To optimize file sink performance in high-throughput scenarios:
getFileSink("app.log", { bufferSize: 16384, // Larger buffer for better performance flushInterval: 10_000 // Flush every 10 seconds})
LogTape is a zero-dependency logging library for JavaScript and TypeScript that provides a simple yet flexible logging system. It supports multiple JavaScript runtimes (Deno, Node.js, Bun, browsers, and edge functions), features hierarchical categories, structured logging, and offers seamless integration for both applications and libraries.
What's New in 0.12.0
Trace Log Level
LogTape now includes a trace severity level, which sits below debug in the verbosity hierarchy. This addition provides finer-grained control over logging output, particularly useful for detailed execution flow tracking during development and debugging.
All standard RFC 5424 facilities (kern, user, mail, daemon, local0–7, etc.)
Automatic priority calculation based on log levels
Structured data support for log record properties
Cross-runtime compatibility with Deno, Node.js, and Bun
Configurable connection timeouts, custom hostnames, and application names
Logger Method Alias
Added Logger.warning() as an alias for Logger.warn() to ensure consistency with the LogLevel type definition. This change addresses the naming mismatch where the LogLevel union type uses "warning" while the logger method was named warn(), making metaprogramming and dynamic method invocation more straightforward.
Unified Package Releases
Starting with version 0.12.0, all LogTape packages including @logtape/otel, @logtape/sentry, and @logtape/syslog share the same version number and are released together. This ensures compatibility between packages and simplifies version management for users.
Improved Build Infrastructure
LogTape has migrated from dnt to tsdown for npm package bundling. tsdown is a library-focused bundler built on top of Rolldown, a Rust-based bundler that powers the next generation of Vite. Unlike general-purpose bundlers, tsdown is specifically optimized for building TypeScript and JavaScript libraries with minimal configuration. This change brings several benefits:
Elimination of bundler warnings in Webpack, Vite, and other build tools
Improved compatibility with modern JavaScript toolchains
Better tree-shaking support
Cleaner package output
Faster build times through Rust-based performance optimizations
Migration Guide
Updating to Trace Level
If you have code that relies on debug being the lowest severity level, you may need to update your log level configurations:
// Before{ lowestLevel: "debug" } // This was the most verbose setting// After{ lowestLevel: "trace" } // Now includes trace messages
Leveraging Buffer Configuration
To optimize file sink performance in high-throughput scenarios:
getFileSink("app.log", { bufferSize: 16384, // Larger buffer for better performance flushInterval: 10_000 // Flush every 10 seconds})