惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
Malwarebytes
Malwarebytes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
F
Future of Privacy Forum
C
Cisco Blogs
T
The Exploit Database - CXSecurity.com
A
Arctic Wolf
S
Securelist
K
Kaspersky official blog
S
Schneier on Security
T
ThreatConnect
T
Tenable Blog
Spread Privacy
Spread Privacy
T
True Tiger Recordings
AWS News Blog
AWS News Blog
F
Fox-IT International blog
量子位
T
Threatpost
V
Vulnerabilities – Threatpost
C
CERT Recently Published Vulnerability Notes
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
宝玉的分享
宝玉的分享
腾讯CDC
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
U
Unit 42
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
The Register - Security
The Register - Security
MyScale Blog
MyScale Blog
小众软件
小众软件
A
About on SuperTechFans
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
博客园 - 三生石上(FineUI控件)
美团技术团队
Google Online Security Blog
Google Online Security Blog
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog

Hacker News: Show HN

Show HN: I built a TikTok style video debate app Show HN: Simple Sprite Sheet Generation Assemblr Show HN: Brew-browser – A native macOS GUI for Homebrew GitHub - aloth/cred-1: CRED-1: An Open Multi-Signal Domain Credibility Dataset (2,672 domains) Show HN: TalkTimer, a micro-SaaS run by an AI agent team Trickster's Table invest-like - AI value-investing: best-tier consensus beat S&P 500 by +72.7% GitHub - kimjune01/swebench-verified: Reproducible recon/craft/audit agent pipeline for SWE-bench Verified. Official-graded, codex-attested, GPL-3.0. Run it yourself. GitHub - mupt-ai/context-drop: cli tool to make sharing context between remote agents dead easy Multiple Real Desktops for Windows GitHub - lionello/han64: Handling Chinese text on the Commodore 64 Show HN: Strudel – Generate commit messages via Apple's on-device LLM Show HN: Audiomass – a free, open-source multitrack audio editor for the web move-reminder The Front Page HtmlUnit – Welcome to HtmlUnit GitHub - kouhxp/textsnap: Snap any image, screenshot, or webpage into plaintext. No GPU. No cloud. One command. Show HN: Pro Health Ledger – An open-source, net-neutral reputation system iPhone 版“Today” - App Store LLMRequirements.com — Hardware for Local LLMs Show HN: Hookwarden – npx tool to find and fix webhook HMAC bugs (JS/TS/Py/PHP) Frello — A small revolt against bloated software Career tools for data professionals | Datamata Studios Show HN: Kanban CLI (A local-first, agent-first task manager for the terminal) Show HN: Fleet – Python supervisor for running coding agents in parallel TravElly | A travel diary app for kids TapToyPia Show HN:An LED display app that lights up concerts, events, and fan moments Show HN: Logo Fonts Home | Qavvāli Wiki Show HN: Panorama – Review Code, Faster Show HN: Slow Code, a monthly meetup to practice coding by hand GitHub - abakh/nbsdgames: A package of 21 new, improved, text-based modern games. Some are entirely original ideas. Best and lightest! Let's Jam Show HN: CurRant->Screw Google scourge, help people notice what is worth a look Fruitsy Show HN: World Cup 2026 free family and friends prediction platform AgentLens — Know if your AI features are actually working Planet Maiko Specter — Use AI on your Ghost blog, locally Money Me - Personal Financial Management Smart Runner: Adaptive Running Plans for iPhone and Apple Watch Show HN: nsS3ui – A non sucking GUI for S3 Show HN: Vibe-coded Steam, but in the browser AI Model Idle · 인공지능 키우기 Show HN: Running BitNet b1.58 inside DRAM by breaking DDR4 timing rules GitHub - muhammadmuzzammil1998/pack-src: Recursively pack source code directories into clean ZIP archives — fast, smart, and ignore-aware. Streakout: Visualize Your Apple Health Workout Data Show HN: Memory for LLM apps that cuts input tokens up to 80% (avg 68%) AI Chess Coach — Know Why Every Move Matters Gemini Omni Flash Video Generator & Editor | Vivify Show HN: Invoker, an IDE for orchestrating massively parallel agents Show HN: I built a RAG and knowledge graph agent that runs locally Clankerfights Show HN: Fed.run – online collaborative Rust IDE and Markdown editor GitHub - EliotAndres/SimStream: SimStream is a library to stream iOS simulators from your Mac to your iPhone (or any web browser) Solana Index | Slot-Based Token Balance API GitHub - mainline-org/mainline: Git-native memory for coding agents. Repo memory before the diff. CostHawk - Track AI Adoption, Cost, and Rollout Across Your Team Show HN: Calculator Music – play songs with number keys in the browser Show HN: First MCP server for Guesty property mgmt – 43 tools, open source GitHub - stukenov/rav2d: AV2 video decoder in Rust — full port of dav2d C logic to memory-safe Rust. 47K lines, 786 tests. Assembly DSP stays via FFI. Show HN: I built a powerful RAG and knowledge graph agent that runs locally Show HN: Directionally bad – a newsletter about risks of AI centralization Welcome chord-commander GitHub - klimentij/klimkit: Agentic engineering across machines, under control. Congress Disclosure Watchlist Digest - TinyOps Studio GitHub - arthurzhu29/larksson Brev - Frictionless Notes - Apps on Google Play TruLayer — Evals, Closed Control Loop & Auto-Rollback for Production AI GitHub - pilatesjs/pilates: Headless flex layout engine for terminal UIs. 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.
GitHub - AlexMason/worldnotes: Extensible inline-markdown editor with wiki-style navigation
recursivegir · 2026-05-25 · via Hacker News: Show HN

An extensible inline-markdown editor with wiki-style navigation.
Type markdown and it renders in place — [[links]] navigate between pages, everything persists to your chosen storage backend.


Quick start

npm install
npm run dev      # Vite dev server with the demo
npm run build    # Build the library to dist/

Documentation

  • Overview: what worldnotes is, setup, core concepts, and typical usage.
  • API reference: editor options, builder methods, instance methods, plugins, storage adapters, and exported types.
  • Architecture: module responsibilities, editor lifecycle, rendering pipeline, navigation model, and contributor notes.

Usage

import { createEditor } from 'worldnotes'

const editor = createEditor(document.getElementById('app'))
  .mount()

With options

import { createEditor, IndexedDBAdapter } from 'worldnotes'

const editor = createEditor(document.getElementById('app'), {
  initialPage: 'home',
  saveDebounceMs: 800,
  onTrailChange: (trail) => console.log('trail:', trail),
  onSave: (page, content) => console.log('saved', page),
})
  .withStorage(new IndexedDBAdapter('my-world'))
  .mount()

API

createEditor(el, options?)

Returns an EditorBuilder. Chain .use(), .withStorage(), then .mount().

Option Type Default Description
storage StorageAdapter LocalStorageAdapter Where pages are persisted
initialPage string 'home' Page to load on mount
saveDebounceMs number 600 Ms to debounce saves after input
onTrailChange (trail: string[]) => void Called on breadcrumb changes
onPageLoad (page, content) => void Called after a page loads
onSave (page, content) => void Called after a save completes

EditorBuilder

Method Description
.use(plugin) Register or replace a plugin
.clearPlugins() Remove all default plugins
.withStorage(adapter) Swap the storage backend
.mount() Mount the editor and return an EditorInstance

EditorInstance

editor.navigate('some-page')     // programmatic navigation
editor.getCurrentPage()          // → 'some-page'
editor.getTrail()                // → ['home', 'some-page']
editor.getContent()              // raw markdown string
editor.setContent('# Hello')    // replace current page content
editor.destroy()                 // tear down, remove listeners

Built-in plugins

Export Syntax Renders
wikiLinkPlugin [[page name]], `[[page name display text]]`
headingsPlugin # h1 ## h2 ### h3 Styled heading
boldPlugin **text** Bold
italicPlugin *text* Italic
inlineCodePlugin `code` Code span
blockquotePlugin > text Blockquote
hrPlugin --- Horizontal rule

defaultPlugins is the array containing all of the above, pre-ordered.

Wiki links can target nested page names. [[projects/acme]] navigates to the projects/acme page but displays as acme. Use pipe syntax for custom display text, for example [[projects/acme|Client Portal]].

The active breadcrumb trail is serialized to the URL as ?path=..., so a page refresh restores the same navigation path.


Writing a custom plugin

import type { Plugin, Token, EditorContext } from 'worldnotes'

const mentionPlugin: Plugin = {
  name: 'mention',

  tokens: [
    {
      type: 'mention',
      pattern: /@(\w+)/,   // inline pattern (no ^ anchor)
    },
  ],

  render(token: Token, context: EditorContext): HTMLElement {
    const el = document.createElement('span')
    el.className = 'my-mention'
    el.textContent = `@${token.groups[0]}`
    return el
  },

  // Optional: intercept clicks on this token
  onNavigate(token: Token, context: EditorContext): true {
    console.log('clicked mention:', token.groups[0])
    return true   // return true to suppress default behaviour
  },
}

// Register it
createEditor(el).use(mentionPlugin).mount()

Pattern rules

  • Inline tokens: plain regex, no ^ anchor. The tokenizer scans left-to-right and finds the earliest match.
  • Line-level tokens: anchor with ^ (e.g. ^# (.*)). These are tested against the whole line before inline scanning begins.
  • Do not use the g flag — patterns are used with .match() per-segment.

Storage adapters

LocalStorageAdapter(namespace?)

Default. Namespaces keys as namespace::pageName.

IndexedDBAdapter(dbName?)

Better for large worlds. Opens (or creates) an IDB object store automatically.

Custom adapter

import type { StorageAdapter } from 'worldnotes'

class MyAdapter implements StorageAdapter {
  async get(key: string): Promise<string | null> { ... }
  async set(key: string, value: string): Promise<void> { ... }
  async keys(): Promise<string[]> { ... }
}

createEditor(el).withStorage(new MyAdapter()).mount()

Styling

The library injects default wn-* CSS into <head> on first mount.
Override any rule with higher specificity:

/* Make wiki links teal instead of purple */
.wn-wiki-link {
  color: #2ec4b6;
  background: #0a2520;
  border-color: #1a5048;
}

/* Custom mention style from your plugin */
.my-mention {
  color: #5aa6e8;
  background: #0e1e30;
}

CSS variables are not used internally — override by class name.