Our journey began 18 years ago.

Since then, we have actively maintained and developed this product, listened to customer feedback, and improved it with every release.

471 bugs solved
149 features implemented
27 interfaces improved
116 product releases since 2008

Version 9.2.0

Version 9.2.0 fixes critical data-loss, crash, hang, paste/HTML corruption, spell-check, table editing, licensing, localization, clipboard, and WPF/WinForms API issues.

68 bug fixes

Bug fixes 68

  1. Design-time "(Trial Version)" banner shown on the Visual Studio designer surface for licensed customers
  2. MS Word paste corrupted markup: final cleanup destroyed non-empty style/class attributes and corrupted tag names
  3. Table Cell Properties crashed on a fractional percentage width/height (unguarded int.Parse)
  4. Table Properties crashed on tables whose cell rowspan exceeded the actual row count
  5. Mail-merge / paste insertion could silently replace the entire document body when pasteHTML failed
  6. Cut/Delete could silently delete unselected content (e.g. an adjacent image) next to the selection
  7. Polish (and other code-page) spell-check dictionaries failed to load on .NET 5+ (encoding provider unregistered)
  8. Table structural edits could corrupt a different or since-modified table via a stale cached TableMap
  9. Decimal CSS font sizes were misread on non-English locales (float.Parse without InvariantCulture)
  10. Design/HTML round-trip corrupted documents: empty non-void elements were emitted without a closing tag
  11. Formatter dropped whitespace-only text nodes, merging adjacent inline words together
  12. Licensing could crash or mis-license on non-Gregorian-calendar locales (culture-sensitive DateTime.Parse of the release date)
  13. MS Word paste merged all lists into one and turned numbered lists into bullets
  14. MS Word paste stripped IE conditional comments (regressed the ALM #492 fix)
  15. Pasting an image from MS Word deleted it (VML stripped before image conversion ran)
  16. Opening a legacy ANSI/windows-1252 HTML file corrupted its text on .NET 5+ (Encoding.Default is UTF-8)
  17. Zero-border table guideline pass could permanently freeze the UI thread (lock + AutoResetEvent + BackgroundWorker deadlock)
  18. Reading BodyHtml before the document existed entered an unbounded message-pump loop (hang)
  19. Saving to a file deleted the existing file before the new content was written (data loss on failure)
  20. Hyperlink dialog: after removing one link, later OK silently unlinked instead of inserting (stale cached-dialog state)
  21. Style Builder re-applied stale CSS or silently wiped styles (property dictionary never cleared between opens)
  22. Style Builder silently deleted CSS values its combo boxes could not represent (display:flex, position:fixed, width:auto, etc.)
  23. Document cleanup deleted the entire content of <font> tags that had no recognized attribute
  24. Style Builder border color pickers corrupted the red channel of every picked color (20-bit ARGB mask)
  25. Table Properties crashed (ArgumentOutOfRangeException) on tables with more than 50 rows or columns
  26. DialogService.Dispose() was empty, leaking every cached dialog per editor instance (static LanguageChanged root)
  27. Reading DocumentHtml corrupted non-ASCII text (adapter bypassed the charset-compensating getter)
  28. A mode-switch failure could silently wipe the entire document (release-only catch cleared the source before conversion)
  29. EditorMode setter swallowed all exceptions in release, leaving the mode flag and content views inconsistent
  30. Email image-embedding crashed on an img without src, a short/empty src, or a malformed base64 data URI
  31. Selection-sync markers could be left permanently inside the user's document on a failed mode switch
  32. Cleanup TD-wrapping regex corrupted nested tables by matching a span across tag boundaries
  33. Table row/column span arithmetic errors (inserted extra cells, mis-sized grid crash, wrong column position, null-cell insert)
  34. Inline spell-check node cache was mutated concurrently from the background scan and UI threads with no synchronization
  35. Interactive spell-check pre-scan ran a full synchronous O(N^2) document scan on the UI thread on tables
  36. A relative Hunspell affix (.aff) path was not rooted against the app base directory, breaking after a CWD change
  37. German/Norwegian/Polish embedded NetSpell dictionaries broke on .NET Framework: .aff/.dic parsed as hardcoded UTF-8, ignoring the SET directive
  38. .NET Framework NetSpell user dictionary ignored the configured file path (read/saved under %APPDATA%\NetSpell instead)
  39. Inline spell-check debounce timer could crash the process by BeginInvoke on a just-disposed control
  40. .NET Framework spell-check suggestion generation raced the background scan (Suggest iterated a list the worker thread cleared)
  41. Mail-merge InsertPlaceholder silently dropped the insert before the document was ready yet still fired PlaceholderInserted claiming success
  42. Mail-merge placeholder emitted an unconditional trailing   that became permanent content and corrupted spacing in merged output
  43. Setting BaseUrl to null crashed the editor with a NullReferenceException on the timer path
  44. WPF: a family of content APIs (Get/SetBodyHtml, class name, body text, embed-images, etc.) silently no-op because the services used the WinForms-only browser.Document with no MSHTML fallback
  45. Paste deleted the current selection before checking there was anything to paste
  46. Set/get element-by-id APIs: NRE on null value, whole-document rewrite when the element is missing, and XPath breakage on IDs containing an apostrophe
  47. Print margins corrupted on non-English locales: culture-formatted decimals written into IE's margin registry values
  48. CanPaste threw when another process held the clipboard (unguarded Clipboard.ContainsImage)
  49. A UTF-8 clipboard probe overwrote the user's clipboard and lost all non-text formats during paste
  50. Parsing a style string with a duplicate CSS property name threw ArgumentException (duplicate declarations are legal CSS)
  51. Hyperlink/element HTML builders emitted attribute values without HTML encoding, corrupting markup when a value contained a quote
  52. Localization override JSON parser mangled escape sequences and mispaired keys for non-string values
  53. Turkish-I bug: list toggle/unlist broke on Turkish and Azerbaijani systems because tagName.ToLower() never matched "li"
  54. Insert Image dialog interpolated alt/title/src/class into the img tag with no HTML-attribute escaping - a double quote corrupted the document
  55. Mail-merge built-in toolbars resolved the field by DisplayName, so duplicate display names always inserted the first field's token
  56. WinForms placeholder toolbar docked ABOVE the regular toolbars, contradicting its documentation and WPF parity
  57. Trial-expired startup could freeze the host (reentrant BodyHtml write inside the message pump; the Form_Load freeze fix covered only the Licensed branch)
  58. Auto-opening the purchase page crashed the host when no browser/URL handler existed (unguarded Process.Start)
  59. Process-wide one-shot license cache could be poisoned by a validation that ran before LicenseKey was assigned, and was never invalidated on key change
  60. Replacing the public editor.Options property was silently ignored by the services layer, which had captured the original UserOption instance
  61. Form close could hang: EditorDispose pumped Application.DoEvents in unbounded loops waiting for browser readiness, and the finalizer ran it too
  62. Buffered property values were permanently dropped when setup post-processing threw (timer stopped before the work, despite a catch claiming a retry)
  63. Font-name combo closed its dropdown on every KeyDown, making keyboard navigation of the font list impossible
  64. FontDialog.FontSize crashed with FormatException when no size was selected, and parsed with current culture after formatting with invariant
  65. Cached Image dialog leaked the previous image's width/height/border settings into every subsequently inserted image
  66. CSS functional colors (rgb()/rgba()) crashed Table Properties and the Style Builder Background page (ColorConverter.ConvertFromString threw)
  67. Browse-for-image crashed the app on a routine cancel path (raw throw "File doesn't exist" inside the LinkClicked handler)
  68. Unbounded 'while (!IsReady) DoEvents()' pump loops could spin forever or crash when the browser never became ready