ๆƒฏๆ€ง่šๅˆ ้ซ˜ๆ•ˆ่ฟฝ่ธชๅ’Œ้˜…่ฏปไฝ ๆ„Ÿๅ…ด่ถฃ็š„ๅšๅฎขใ€ๆ–ฐ้—ปใ€็ง‘ๆŠ€่ต„่ฎฏ
้˜…่ฏปๅŽŸๆ–‡ ๅœจๆƒฏๆ€ง่šๅˆไธญๆ‰“ๅผ€

ๆŽจ่่ฎข้˜…ๆบ

Recorded Future
Recorded Future
P
Privacy & Cybersecurity Law Blog
Latest news
Latest news
Cyberwarzone
Cyberwarzone
Spread Privacy
Spread Privacy
F
Future of Privacy Forum
NISL@THU
NISL@THU
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Troy Hunt's Blog
Attack and Defense Labs
Attack and Defense Labs
ๅฅ‡ๅฎขSolidotโ€“ไผ ้€’ๆœ€ๆ–ฐ็ง‘ๆŠ€ๆƒ…ๆŠฅ
ๅฅ‡ๅฎขSolidotโ€“ไผ ้€’ๆœ€ๆ–ฐ็ง‘ๆŠ€ๆƒ…ๆŠฅ
Schneier on Security
Schneier on Security
่…พ
่…พ่ฎฏCDC
P
Privacy International News Feed
ๆœ‰่ตžๆŠ€ๆœฏๅ›ข้˜Ÿ
ๆœ‰่ตžๆŠ€ๆœฏๅ›ข้˜Ÿ
AWS News Blog
AWS News Blog
K
Kaspersky official blog
C
Cisco Blogs
The Hacker News
The Hacker News
B
Blog
Stack Overflow Blog
Stack Overflow Blog
T
ThreatConnect
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
ๅฎ็މ็š„ๅˆ†ไบซ
ๅฎ็މ็š„ๅˆ†ไบซ
F
Full Disclosure
C
Check Point Blog
Cisco Talos Blog
Cisco Talos Blog
็พŽ
็พŽๅ›ขๆŠ€ๆœฏๅ›ข้˜Ÿ
S
Security Archives - TechRepublic
E
Exploit-DB.com RSS Feed
D
Docker
Security Latest
Security Latest
Blog โ€” PlanetScale
Blog โ€” PlanetScale
S
Secure Thoughts
T
Threatpost
D
DataBreaches.Net
ๅš
ๅšๅฎขๅ›ญ - ใ€ๅฝ“่€็‰นใ€‘
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
T
True Tiger Recordings
P
Proofpoint News Feed
L
LINUX DO - ๆœ€ๆ–ฐ่ฏ้ข˜
F
Fox-IT International blog
W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
ๆœˆๅ…‰ๅšๅฎข
ๆœˆๅ…‰ๅšๅฎข
G
Google Developers Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
B
Blog RSS Feed

Hacker News: Show HN

NOW and CSCO Politician Trading Claims ThinkLLM โ€” Think through your LLM choices Show HN: Waiting for AI Grand Prix racing SIM? Me too So I made one WAR.GOV/UFO Microfilm5 Show HN: Claude Code for Customer Support Show HN: Agentikus Purr - Apps on Google Play atom.plumocracy.com Show HN: BonzAI โ€“ self-sovereign, local LLM inference in the browser GitHub - T0nd3/logatory: Local-first log analysis with PII redaction, threat detection, anomaly detection and LLM insights โ€” CLI, web dashboard and REST API GitHub - doshareme/synchole: P2P Data Sync Protocol GitHub - secluso/core: A privacy-preserving Raspberry Pi home security camera that uses advanced end-to-end encryption. Show HN: Microcodegen.py โ€“ PRD โ†’ FastAPI app, one file, no LLM calls iPhone ็‰ˆโ€œTodayโ€ - App Store ScrollLaunch โ€” Launch Your Product. Get Seen Weekly. GitHub - ppserapiao/mneme: the open, user-sovereign memory layer for AI. local-first ยท client-side encrypted ยท open protocol. your memory. your keys. every model. Datapoint AI Home Codeep โ€” Go Deep into Code OpenRig โ€” Local control plane for multi-agent coding topologies GitHub - allenwu-blip/mcpaudit: Static pre-install security scanner for MCP (Model Context Protocol) servers โ€” `npx mcpaudit <path>` flags command injection, credential/env exfiltration into LLM-visible output, over-broad filesystem/tool scope and dynamic eval before you wire a server into your agent. Show HN: Quit All, an iOS app with an SOS mode for cravings GitHub - dmichael-fastly/fastly-examples-live-betting-fanout: A working example of distributing live game scores and betting odds to millions of concurrent users without overwhelming origin โ€” built on Fastly's edge stack. 404 Page Generator โ€” Make your 404 page a needle-mover Show HN: Neuz, a self-hosted news dashboard curated by Claude Senior SWE interview prep โ€” Semicolony GitHub - DefangLabs/pulumi-defang: Defang Pulumi providers - Take your app from Docker Compose to a secure and scalable cloud deployment with Pulumi. OpenYardage โ€” Printable Golf Yardage Books GitHub - uAIex/KeyMouseRecorder Ship Mobile Features Instantly โ€” Nativeblocks SDUI Platform CoreMem - Your context, any AI agent Show HN: AI-Mirror - Self-optimising ranking engine for modern web applications. Show HN: Mechs.lol โ€“ a free, web-based autoshooter game SnapMeasureAI โ€” AI Body Measurements For The Perfect Fit Show HN: Accurate body measurements from two images GitHub - jonhermansen/darnix: Darwin system built with Nix Show HN: My dad is a forensic accountant. I automated ~62% of his job Mobile presentations in 60 seconds - Flow2 GitHub - bigmacfive/appbun: Turn any webpage into an inspectable Electrobun desktop app with one command. Show HN: Interactive first-principles climate physics simulation with explainer Show HN: Lilo โ€“ An open source personal AI assistant that lives in Telegram Pablo. Recreate any UI component from the web. TinyCld - Your cloud, your rules GitHub - prisma/prisma-next Show HN: Blacknode โ€“ Visual workflow builder Claude can drive via MCP Anime AI Studio | Create AI Anime Dramas & Videos from Ideas Charm - Autocorrect that actually works Show HN: A botless meeting recorder and summarizer that runs in the browser GitHub - ninjahawk/swarmsim: Computational simulations of emergent flocking, phase transitions, and predator-prey dynamics GitHub - mljar/mercury: Create web apps from Python notebooks Show HN: Agent Capsule โ€“ versioned checkpoints for agents you run GitHub - yicheng47/runner: An editor for teams of local coding agents (Claude Code, Codex, and friends) iPhone ็‰ˆโ€œTodayโ€ - App Store GitHub - scosman/videowright: Build animated explainer videos with your coding agent Show HN: Auto โ€“ Execute cross-venue crypto strategies from one prompt GitHub - geoff1111/origin: A book examining Young-Earth-Creationism and naturalism as competing civilizational worldviews. Show HN: LocalPanel โ€“ Manage any SSH server from Mac/Windows, no server agents iPhone ็‰ˆโ€œTodayโ€ - App Store wwwatch ยท AI intel for builders Mnestica โ€” AI-Powered Memory System GitHub - sumant1122/ringlog: A highly optimized, thread-per-core message broker built from scratch in Rust, utilizing io_uring for zero-copy, low-latency commit log streaming. Stacktower - AI-Powered Dependency Analysis | Stacktower Repo readiness infrastructure for developer onboarding and AI agents HeadlessPDF โ€“ HTML to PDF REST API Show HN: Myco โ€“ coordinate Claude and DeepSeek and other LLMs in one agent swarm Databricks โ€” DecisionBox | DecisionBox VisuallyJs GitHub - czl9707/token-aware-image: A Skill Creates Images Respecting Design Tokens GitHub - unprovable/ShadowCat: Single file optical file transfer using a browser AgentRecall โ€” Persistent Memory for AI Agents GitHub - ankurokok/hr: A colored bar that marks where you are in your terminal. Interactive AI Chat - Chrome ๅบ”็”จๅ•†ๅบ— Show HN: We're building an open-source battery [video] GitHub - The-CISO-Network/pqc: Post-Quantum Cryptography sdk-gen โ€” your Stainless replacement GitHub - evilmarty/duex: Duex is a Go-based terminal utility for visualizing and analyzing disk usage, featuring interactive navigation, accurate sizing, and real-time feedback. Show HN: I threw away my analytics dashboard and replaced it with 42 MCP tools GitHub - getnao/sylph: The open-source company brain. Run your entire company with AI agents, skills, and a self-improving context. inkoscribe - Private Local Audio Transcription for macOS KVBoost โ€” Pitch Deck Show HN: TLS Certificate Management and PKI GitHub - alonsovm44/tc-lang: A minimalistic portable assembly lenguage Roughform โ€” 3D Modeling & Pose Reference Show HN: Spec-Driven Development Workflow for Claude Code Pocket TTS - WebAssembly Demo Deputies | Background agent control plane Mixfont โ€” Make Any Font You Can Imagine Show HN: Traditional Card Game Website Show HN: Baby's First Cards โ€“ real photo flash cards for toddlers AI Local Recorder App - App Store Show HN: Agent-estimate, how long a coding task takes, at agent speed Smithereen โ€” your social network Lumox - Wireless device screen mirroring for Mac Show HN: A Turing machine simulating a Turing machine simulating a... Show HN: Onda โ€“ a cross-platform alternative to DSView for DSLogic analyzers [video] Show HN: Glowing balls falling through a spinning maze GitHub - eigenpal/docx-editor: Open-source WYSIWYG .docx editor library with canonical OOXML, tracked changes, and real-time collaboration. ANML Foundation โ€” Agentic Notation Markup Language Datasette Agent GitHub - simd-ai/agent
GitHub - pilatesjs/pilates: Headless flex layout engine for terminal UIs.
wangzhijie ยท 2026-05-23 ยท via Hacker News: Show HN

Pilates

npm @pilates/core npm @pilates/render npm @pilates/react npm @pilates/widgets bundle size @pilates/core license MIT

Pilates demo โ€” react-build-dashboard example

Headless flex layout engine for terminal UIs. Pure TypeScript, zero runtime dependencies.

๐Ÿ“– API reference

Pilates is a flex layout engine designed for the terminal: integer cell coordinates, CJK / emoji / wide-char awareness, ANSI escape passthrough, and unbundled from any UI framework. Use it directly to compute layouts, or wrap the included renderer to produce styled strings.

import { render } from '@pilates/render';

process.stdout.write(
  render({
    width: 80,
    height: 6,
    flexDirection: 'row',
    children: [
      { flex: 1, border: 'rounded', title: 'Logs',   children: [{ text: 'user logged in' }] },
      { width: 20, border: 'single', title: 'Status', children: [{ text: 'ok', color: 'green', bold: true }] },
    ],
  }),
);
// โ•ญโ”€ Logs โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎโ”Œโ”€ Status โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
// โ”‚user logged in                                            โ”‚โ”‚ok                โ”‚
// โ”‚                                                          โ”‚โ”‚                  โ”‚
// โ”‚                                                          โ”‚โ”‚                  โ”‚
// โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏโ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Why

Terminal UIs in JavaScript are dominated by Ink, which couples two distinct concerns into one package: a WASM flex layout engine and a React reconciler. If you want the layout half, you have to take all of React. Pilates separates them:

  • @pilates/core โ€” the engine. Imperative Node API, returns integer cell coordinates. Pure TypeScript, zero runtime dependencies. Handles CJK / emoji / wide-char widths, integer-cell rounding, the CSS Flexbox freeze loop, and absolute positioning. Validated cell-for-cell against a reference WASM flexbox implementation across 33 oracle fixtures.
  • @pilates/render โ€” the out-of-box renderer. Declarative POJO tree โ†’ painted ANSI string with borders, titles, colors, and text wrap. Uses core internally; depends only on it.
  • @pilates/diff โ€” cell-level frame diffing + minimal ANSI redraw sequences for live TUIs. Pairs with @pilates/render.
  • @pilates/react โ€” optional React reconciler on top of the same engine, for consumers who want JSX and hooks. Independent of the core / render / diff stack โ€” you don't pay for it if you don't import it.
  • @pilates/widgets โ€” interactive widgets (TextInput, Select, Spinner) built on @pilates/react. For wizard-style CLI flows.

Packages

Package Status What
@pilates/core 2.0.1 Engine: imperative Node API, returns layout boxes.
@pilates/render 1.0.2 Out-of-box: declarative tree โ†’ painted string.
@pilates/diff 0.2.1 Cell-level frame diff + minimal ANSI redraw.
@pilates/react 0.4.1 React reconciler โ€” author terminal UIs with JSX, hooks, mouse, focus, scroll.
@pilates/widgets 0.1.0-rc.4 Interactive widgets (TextInput, Select, Spinner, MultiSelect, Tabs, Table, ProgressBar, TextArea) for @pilates/react.

Examples

Eleven runnable examples live under examples/ โ€” six built on the imperative @pilates/render API, five built on @pilates/react.

Imperative (@pilates/render):

Example What it shows
chat-log Two-pane chat layout: scrolling messages + status sidebar. Wide-char & emoji passthrough.
dashboard System-monitor layout: status header, four stat tiles in a row, metrics strip.
gallery Grid of cards that wraps to multiple rows on a narrow container.
modal Confirm-action modal floating over a list โ€” exercises absolute positioning.
progress-table Multi-row progress dashboard with bars and color-coded status.
split-pane Editor-style: header + 3-pane body (files / editor / outline) + status footer.

React (@pilates/react + @pilates/widgets):

Example What it shows
react-build-dashboard Flagship demo. Interactive build-pipeline dashboard: <ScrollView> ร— 2, mouse, useFocus, keyboard nav, animation, <ProgressBar> + <Spinner> widgets, all stitched together.
react-counter Minimal reconciler example: counter incrementing every 250ms, demonstrating the diff-based redraw loop.
react-dashboard React port of dashboard with a live tick counter on the header.
react-modal React port of modal: centered confirmation dialog over a scrollable list.
react-wizard Multi-step TextInput โ†’ Select โ†’ Spinner wizard exercising every @pilates/widgets component.
pnpm install
# imperative
pnpm --filter @pilates-examples/chat-log dev
pnpm --filter @pilates-examples/progress-table dev
# react
pnpm --filter @pilates-examples/react-counter dev
pnpm --filter @pilates-examples/react-wizard dev
# flagship
pnpm --filter @pilates-examples/react-build-dashboard dev

Quick start (using just the engine)

import { Node, Edge } from '@pilates/core';

const root = Node.create();
root.setFlexDirection('row');
root.setWidth(80);
root.setHeight(24);
root.setPadding(Edge.All, 1);

const main = Node.create();
main.setFlex(1);
const sidebar = Node.create();
sidebar.setWidth(20);

root.insertChild(main, 0);
root.insertChild(sidebar, 1);
root.calculateLayout();

main.getComputedLayout();    // { left:1, top:1, width:58, height:22 }
sidebar.getComputedLayout(); // { left:59, top:1, width:20, height:22 }

You'd then paint to the terminal yourself โ€” or pass the same shape via the declarative API to @pilates/render to skip the painting:

import { render } from '@pilates/render';

process.stdout.write(
  render({
    width: 80,
    height: 24,
    flexDirection: 'row',
    padding: 1,
    children: [{ flex: 1 }, { width: 20 }],
  }),
);

What's supported

Category Properties
Direction flexDirection (row / column / -reverse), flexWrap (nowrap / wrap / wrap-reverse)
Sizing width, height, minWidth, minHeight, maxWidth, maxHeight
Flex flex (shorthand), flexGrow, flexShrink, flexBasis
Spacing padding / margin per edge, gap (row + column)
Alignment justifyContent, alignItems, alignSelf, alignContent (all CSS values)
Position positionType (relative / absolute), position per edge
Visibility display (flex / none)
Render-only border (5 styles), borderColor, title, color, bgColor, bold, italic, underline, dim, inverse, wrap

Out of v1: aspectRatio, RTL/LTR direction inheritance, baseline alignment, input handling, animations, scroll containers, style inheritance.

Performance

Pilates vs WASM Yoga: pure-TS Pilates is 1.7-10ร— faster across the 9-scenario benchmark suite, including hot-relayout and structural mutation

Pure-TypeScript layout, validated cell-for-cell against WASM Yoga. Across the 9 scenarios in our bench suite, the pure-TS engine is faster than WASM Yoga on each โ€” including the structural-mutation workload (append + remove a row per frame) Yoga led on through mid-2026. Numbers are median latency from pnpm bench (Node 22, win32-x64, ~5s tinybench window with bootstrap CI95; a hand-picked suite, not a universal claim โ€” real workloads will differ):

Scenario Pilates core yoga-layout (WASM) Pilates speedup
tiny (10 nodes) 4.5ยตs 19.0ยตs 4.2ร— faster
realistic (~100) 121ยตs 328ยตs 2.7ร— faster
stress (~1000) 601ยตs 1.94ms 3.2ร— faster
big (~5000) 3.32ms 9.17ms 2.8ร— faster
huge (~10000) 8.62ms 18.5ms 2.1ร— faster
hot-relayout (1k persistent, mutate one leaf/frame) 16.3ยตs 83.0ยตs 5.1ร— faster
hot-relayout + boundaries (same + explicit-sized rows) 15.8ยตs 77.8ยตs 4.9ร— faster
hot-relayout (text mutation, fixed-size table) 8.9ยตs 90.6ยตs 10ร— faster
hot-structural (append + remove a row / frame) 71.3ยตs 118.3ยตs 1.7ร— faster

The hot-relayout and hot-structural patterns โ€” building a tree once and mutating-and-relaying out per frame โ€” are the workloads Yoga's WASM compute advantage traditionally won on. The Spineless incremental layout engine (an attribute-grammar dependency graph + priority-queue recomputation; refined through phases 8โ€“17 with a typed-array runtime, linear-recurrence main-axis positions, and fold-default input elimination) flips that: a single leaf mutation re-evaluates only the fields actually downstream of the change, and structural mutations patch only the affected subtree.

For trees of pure fixed-size cells (e.g. a data table with one cell's text length changing per frame), the direct @pilates/core (spineless) runtime mutation goes through in ~0.2ยตs โ€” 380ร— faster than the Yoga round-trip. That path is @internal for now; the public calculateLayout ships the engine and is what every other Pilates consumer uses.

WASM Yoga's compute kernel is genuinely fast in isolation, but every setProperty / Node.create crosses the JSโ†”WASM boundary; that marshalling cost dominates at TUI tree sizes (10โ€“10k nodes), and the Spineless engine's incremental recompute then beats WASM's per-frame full layout. Pure-TS Pilates pays no marshalling cost.

Reproduce with pnpm bench. Full numbers + scenario shapes in bench/RESULTS.md.

Validation

Every flex feature is verified cell-for-cell against a reference WASM flexbox implementation:

  • 33 oracle fixtures (fixed widths, flex distributions, padding, margin, gap, min/max, all justifyContent / alignItems / alignSelf / alignContent values, flexWrap, flexWrap: wrap-reverse, every absolute positioning anchor)
  • 200+ unit + algorithm + render tests
  • Unicode width fuzzer running through 200 randomized strings against @xterm/headless per CI run, plus a fixture set of pinned agreement cases and documented divergences (where modern terminals render wider than xterm.js's Unicode-11 tables)
  • Property-based fuzz with fast-check over layout invariants โ€” non-overflow, sibling non-overlap, reproducibility โ€” across randomly generated trees

Notable design choices

  • Default flexShrink: 0 in core (React Native convention, not CSS's 1) โ€” declared widths stay declared. The render layer flips this to 1 for text leaves so wrapped text fits its container.
  • Absolute offsets are relative to the parent's outer box, not its content (post-padding) box โ€” React Native semantics, not CSS. Keeps consumers porting from Ink / RN consistent.
  • Integer cell rounding rounds absolute corners and derives size from rounded edges โ€” sibling boxes butt cleanly across uneven splits ([100, flex:1, flex:1, flex:1] โ†’ [34, 33, 33]).

Status

@pilates/core@2.0.1 is on npm. Core algorithm + flex pipeline are feature-complete, validated cell-for-cell against WASM Yoga, and faster than Yoga on each of the 9 scenarios in the bench suite (see Performance above) โ€” powered by the Spineless incremental engine. The React layer ships mouse, scroll, focus management, typed errors, and layout devtools.

Contributing

Issues, discussions, and PRs welcome. Start with CONTRIBUTING.md for setup, the test loop, and what the maintainer expects from layout-algorithm changes (oracle-fixture coverage). By participating you agree to follow the Code of Conduct. Security issues: see SECURITY.md for the private disclosure channel.

License

MIT ยฉ Zhijie Wang.