Roadmap and known limitations

Documentation index

Delivered foundation

The current source implements separate model/history and DOM input, source/visual Markdown and HTML, plain source languages, rich policy, nested lists/tasks, pipe/HTML tables, image references/import callbacks, rich clipboard paths, guarded save snapshots, bookmarks/transactions, synchronized resizable preview, custom preview HTML/preprocessing, preview-only CSS, and a reusable .NET 10 WinForms control with a local NuGet package.

Earlier milestone notes that list tables, images, typed WinForms integration, source formatting shortcuts, or preview hooks as wholly deferred are historical. They should not be used as the current feature list.

Immediate correctness work identified by this audit

Item Current behavior Work item and acceptance criterion
Native JavaScript language wire value Enum camel-cases to javaScript; comment command expects javascript Add explicit wire mapping and regression coverage; JavaScript comments toggle through C# and keyboard paths
Optional ReplaceRangeAsync revision Null is serialized as a supplied guard and rejected Omit/normalize absent revision; test omitted, valid and stale guards
Empty native PasteAsync No text clipboard passes empty string to replacement Make host/helper no-op on no compatible text; test existing selection remains intact
Forced bold/italic in Markdown Source Optional enabled argument currently toggles regardless of requested bool Define/implement idempotent on/off semantics or expose a clearly separate toggle contract
Clearing display strings Some JS configure setters ignore empty strings Define reset behavior for placeholder/font/label and test repeated setting/clearing

These issues are documented from source inspection. This documentation-only delivery does not silently change the runtime package. Existing safe usage is noted in the relevant method/clipboard guides; in particular, pass an explicit revision to ReplaceRangeAsync.

Release acceptance work

  1. Validate IME, mobile keyboards, screen readers and native selection on target devices.
  2. Exercise real Word/Outlook/browser/spreadsheet clipboard combinations and image drop/paste gestures.
  3. Build a runnable Photino host for the actual Photino version and verify its platform engines.
  4. Expand the Markdown/HTML corpus around nesting, delimiters, escaped table pipes, unsupported constructs and round trips.
  5. Profile representative large documents/tables and confirm practical product limits.
  6. Review deployment/recovery on clean machines and confirm asset portability across Olympus/web/native hosts.

The 100/13/18 recorded checks are a useful baseline, not a substitute for these gates. Fixes should add coverage at the boundary that failed rather than merely increasing unrelated test counts.

Secondary features

Area Candidate work Design consideration
Search Regex, richer replace UI, rich-mode Replace All Preserve structure and make replacement semantics explicit
Source editing Active line, bracket UI, folding, multiple cursors, completion Bracket helper exists; full UI/language service does not
Formatting Arbitrary content fonts/colors/sizes, picker controls Keep storage policy and clean Markdown compatibility explicit
Tables Column widths, richer cell selection, more HTML import cases Merged/nested/multi-block cells require schema and serialization work
Images Captions, resizing, richer placement, asset browsing Host remains asset owner; define portable serialization
Preview Host-provided source maps for transformed/custom HTML Allows exact synchronization beyond proportional following
Markdown Broader CommonMark/GFM conformance, extensions Add fixtures and avoid silently changing saved documents
Native host Better crash recovery, richer clipboard helpers, richer capability types Preserve natural typed API and queue semantics
Packaging Public feed/release process, versioning/license metadata review Current package is local preview; no public publication performed
AI Host prompt/review UI, streaming suggestions, guarded apply No provider dependency in core; stale results must not overwrite user edits

Architectural work for large-scale editing

Viewport virtualization, incremental parsing/colorizing, more efficient text storage, background work, and a custom input/caret surface are separate architectural milestones. The current adapter/model separation helps, but native composition, accessibility and mobile behavior must be preserved. Do not make those changes merely to imitate an IDE when the actual note sizes do not require them.

Collaboration/CRDT, multiplayer cursors, operational transformation, durable undo history, and server-side merge are not implemented. A local revision guard prevents stale operations in one session; it does not solve multi-user concurrency.

Limits to communicate to product owners

Keep this list synchronized with implementation and test evidence as work is completed. The main documentation index should remain the single starting point, with details maintained in these separate topic documents.