Skip to content

Releases: Nowely/marked-input

v0.6.0

15 Mar 21:20
7d275e5

Choose a tag to compare

0.6.0 (2026-03-15)

Features

  • blocks: add block merging via Backspace/Delete and TodoList story (#148) (0685033)
  • blocks: Notion-like block editor with keyboard navigation, block operations, and drag-and-drop (#146) (4bd5534)
  • drag: replace block mode with drag-and-drop row management (#149) (83034e8)
  • storybook: add withPlainValue decorator and enhance drag/text stories (#151) (1d76c1f)

Refactoring

  • storybook: standardize stories with PlainValuePanel and StoryObj types across React and Vue (#152) (42d21f3)

Miscellaneous

  • upgrade to Vite 8, Vitest 4.1, and Astro 6 (#150) (693966d)

v0.5.0

07 Mar 15:02
ac6af98

Choose a tag to compare

0.5.0 (2026-03-07)

Features

  • core: add ContentEditableController for DOM-based editing (#134) (633133b)

Refactoring

  • extract shared logic from framework adapters to core (#145) (795c0e8)
  • improve Signal typing with interface augmentation for framework-specific use() return types (#143) (e6d4efc)

Miscellaneous

  • migrate to pnpm catalog for centralized dependency management (#140) (b71cd55)
  • update oxlint configuration (#144) (1db73ec)

Tests

  • add comprehensive Vue component tests with Vitest (#142) (231f3dc)

v0.4.0

06 Mar 19:24
86c24c9

Choose a tag to compare

0.4.0 (2026-03-06)

Features

  • core: predictive input model via beforeinput (#131) (80d0369)

Documentation

Miscellaneous

v0.3.0

04 Mar 13:04
fe0bc60

Choose a tag to compare

0.3.0 (2026-03-04)

Features

  • add block reordering with drag-and-drop support (#130) (511c973)
  • storybook: add Vue Storybook (#129) (06f75c3)

Documentation

  • update README to include Vue package information and badges (3a87989)

Miscellaneous

  • add sync step to release workflow for main branch updates (bde610f)
  • rename package from root to markput in package.json (1cb8a8a)
  • update release-please config to exclude component in tag (1555898)

markput: v0.2.0

03 Mar 21:56
b42e4d3

Choose a tag to compare

0.2.0 (2026-03-03)

Features

Bug Fixes

  • storybook: prevent caret reset in TextSpan and fix Storybook issues (#122) (3472085)

Refactoring

  • extract core features and controllers from React package (#124) (c0ad3d7)

Miscellaneous

  • add release-please config for unified versioning (db07f5e)
  • upgrade to React 19 (#121) (d9c9531)

CI

  • add automated release workflow and PR validation (#120) (85b6fc4)

0.1.0

21 Feb 14:13

Choose a tag to compare

What's Changed

  • Rename package from rc-marked-input to @markput/react (#119) (6517a76)
  • Restructure monorepo into framework-specific subdirectories by @Nowely in #118

Full Changelog: v4.2.0...0.1.0

v4.1.0

01 Feb 13:33

Choose a tag to compare

What's Changed

  • Enhance ESLint configuration by @Nowely in #105
  • Add SingleEditable experimental story by @Nowely in #106
  • Add documentation website by @Nowely in #107
  • Fix sidebar showing by @Nowely in #108
  • Move integration tests into Storybook’s browser test harness by @Nowely in #109
  • Simplify option API with mark/overlay props by @Nowely in #110
  • Update minor dependencies by @Nowely in #111
  • Refactor useMark hook and rename API properties by @Nowely in #112

Full Changelog: v4.0.0...v4.1.0

v4.0.0

17 Nov 23:15

Choose a tag to compare

Release Notes (v3.1.1 → v4.0.0)

🚨 Breaking Changes

1. Slots-Based Option Architecture (#103)

The Option interface has been completely refactored to use a slots-based pattern (similar to Material-UI).

Migration:

// Before
const options = [{
  trigger: '@',
  data: ['alice', 'bob', 'charlie'],
  initMark: ({ value, meta }) => ({
    label: value,
    meta: meta
  })
}]

// After
const options = [{
  slotProps: {
    mark: ({ value, meta }) => ({
      label: value,
      meta: meta
    }),
    overlay: {
      trigger: '@',
      data: ['alice', 'bob', 'charlie']
    }
  }
}]

2. Framework-Agnostic Core Layer (#102)

Introduced separation between core and React-specific types.

Renamed:

  • MarkedInputProps.triggerMarkedInputProps.showOverlayOn
  • InnerOptionCoreOption
  • InnerMarkedInputPropsCoreMarkputProps
  • DEFAULT_TRIGGERDEFAULT_OVERLAY_TRIGGER

Removed:

  • Internal APIs removed from public exports
  • React-specific code removed from core package

3. Slots API for Component Customization (#101)

New Slots API replaces children-based customization.

Migration:

// Before
<MarkedInput ...>
  <div onKeyDown={handler} />
  <span className="custom" />
</MarkedInput>

// After
<MarkedInput
  slots={{ container: 'div', textSpan: 'span' }}
  slotProps={{
    container: { onKeyDown: handler },
    textSpan: { className: 'custom' },
  }}
/>

4. ESM-Only Build (#99)

Removed CommonJS/UMD build formats. Package now distributed as ESM-only.

5. ParserV2 Migration (#98)

Markup Format Change:

// Before: @[__label__](__value__)
// After:  @[__value__](__meta__)

Mark Component Props:

// Before
const Mark = ({label, value}) => <mark title={value}>{label}</mark>

// After
const Mark = ({value, meta}) => <mark title={meta}>{value}</mark>

✨ New Features

Nested Marks Support (#100)

  • Tree-based token structure supporting arbitrary nesting depth
  • Two-value patterns for HTML-like tag matching (e.g., <value>...</value>)
  • Enhanced useMark hook with nesting metadata (depth, parent, children)
  • __nested__ placeholder enables child mark parsing

Slots API (#101)

  • slots prop for overriding internal components
  • slotProps prop for type-safe prop passing
  • Data attributes support with automatic camelCase to kebab-case conversion

Per-Option Component Overrides (#103)

  • slots property in Option for per-option component customization

⚡ Performance Improvements

ParserV2 Rewrite (#96)

  • Significant speed gains across all benchmark test cases
  • Exceptional improvements on complex patterns (markdown-like content)
  • Single-pass tree building with O(M) complexity
  • Memory efficiency improvements with reduced allocations
  • Optimized segment matching with dual strategy approach

Architecture Improvements

  • Enhanced PatternMatcher with better conflict resolution
  • Improved MarkupRegistry with segment deduplication and fast lookups
  • Simplified structure and improved readability

🛠️ Infrastructure

CI/CD Improvements (#95)

  • Added CI type checking, linting, and formatting
  • npm registry setup in Publish workflow (#967f0c5)
  • Enable deletion of unnecessary properties in package preparation (#d6d0980)

Dependency Updates (#97)

  • Updated all project dependencies to latest versions

Code Quality

  • Removed deprecated benchmark files (#94)
  • Enhanced test coverage for contentEditable behavior and event handlers
  • Comprehensive tests for slots functionality

📚 Documentation

  • Updated README with Slots section and examples
  • Added Storybook stories for nested marks
  • Added Storybook stories for Slots API (Slots.stories.tsx)
  • Full TypeScript JSDoc documentation
  • Improved Store domain organization documentation

Migration Checklist

To upgrade from v3.1.1 to v4.0.0:

  • Update all markup patterns: __label____value__, __value____meta__
  • Update Mark components: Change props from {label, value} to {value, meta}
  • Migrate to slots-based Option API: Move initMark, overlayTrigger, data into slotProps
  • Replace children-based customization with Slots API
  • Update imports: Replace deprecated ParserV1 types with ParserV2 equivalents
  • Ensure your build system supports ESM (no CommonJS support)
  • Update renamed properties: triggeroverlayTrigger / showOverlayOn
  • Review and update any usage of removed internal APIs

Full Changelog: v3.1.1...HEAD (13 commits)

What's Changed

  • Add Nested Parser by @Nowely in #93
  • Remove deprecated benchmark files by @Nowely in #94
  • Add CI type checking, linting, formatting by @Nowely in #95
  • Rewrite ParserV2 for performance and clarity improvements by @Nowely in #96
  • Update dependencies by @Nowely in #97
  • Migrate to ParserV2 by @Nowely in #98
  • Convert build to ESM-only by @Nowely in #99
  • Implement first nested marks support by @Nowely in #100
  • Add Slots API for component customization by @Nowely in #101
  • Refactor Option to adopt slots-based architecture by @Nowely in #103

Full Changelog: v3.1.1...v4.0.0

v3.1.1

23 Sep 20:37

Choose a tag to compare

What's Changed

  • Add lint in #86
  • Add formatter in #87
  • Migrate to pnpm in #88
  • Use composite action in #89
  • Migrate to monorepo in #90
  • Update dependencies and improve package configurations in #91
  • Extract core package in #92

Full Changelog: v3.1.0...v3.1.1

v3.1.0

15 Jul 21:11

Choose a tag to compare

What's Changed

  • Add support react 19
  • Update storybook in #73
  • Update deps in #74
  • Minor improves in #75
  • Update deps in #80
  • Add benchmarks in #81
  • Add preparcer in #82
    • Added preparcer system and tests
    • Optimize rerenders
    • Add two way bindings to value
    • Make the value prop optional
    • Make the onChange prop optional
    • Add the defaultValue prop
    • Updated dependencies
    • Improved focus management
    • Updated editorconfig
    • Update stories
    • Refactors inner systems
    • and more
  • Add default feature in #83
  • Fix functional regression in #84
  • Update feature structure in #85

Full Changelog: v3.0.1...v3.1.0