Skip to content

Releases: adityabhalsod/trevixal-editor

1.1.0

Choose a tag to compare

@adityabhalsod adityabhalsod released this 20 Oct 17:50
0780769

Word's long-document, formatting, table and list tools; page layout for print
and Word; comments, forms and mail merge; and exports that draw what the
editor shows. Three packages are new.

The API change is additive: no export, node, mark or attribute was removed,
and every new option and parameter is optional. Some defaults change; they
are listed under What existing users and hosts will notice.

New packages

Package What it is
@trevixal/extension-comments Comment threads on a selection, with replies, resolving and @mentions from the host's list, and an onMention hook. Threads are saved in the document and written to .docx as Word comments.
@trevixal/extension-forms Fields in the text: a text box, a tick box, a drop-down, a date and a signature. A fillable PDF with real AcroForm fields. Mail merge from CSV or JSON, one document a row.
@trevixal/create-extension npm create @trevixal/extension <name> writes an extension package with a node, its commands, a menu entry and four tests.

Long documents

  • Heading numbers in four schemes: 1. 1.1. 1.1.1., 1. a. i.,
    1) a) i) and I. A. 1..
  • Captions number figures, tables and equations, and a
    cross-reference follows its target's number.
  • Tables of figures, endnotes, and an index built from marked
    words.
  • Line numbers in the margin, on screen and in print.
  • Right to left for a document or a block, with the chrome mirrored.
    List numbers, bullets, task boxes and timelines move to the right with the
    text.
  • The block menu: turn into, duplicate, move, copy a link, delete.
  • In a .docx these are Word's own: heading numbering, SEQ, REF, TOC,
    XE and INDEX fields, line numbering and bidi.

Formatting

  • Named styles: paragraph and character styles in a Styles pane. Change
    one and everything in that style follows.
  • AutoFormat as you type (curly quotes, dashes, the ellipsis, fractions,
    arrows, © ® ™, each one undo away) and AutoCorrect, with a list you can
    edit.
  • Drop caps, text columns, hyphenation, and widow and orphan
    control
    .
  • Borders and shading on paragraphs, and tab stops (left, centre,
    right and decimal) with dot, hyphen or underscore leaders.

Tables

  • Select cells: double-click a cell, and keep dragging to select a
    rectangle. Merge, split and shading act on the selection.
  • Merge cells down a column as well as along a row, and split a cell
    into rows and columns (up to 63). Word's and RTF's vertical merges are read
    and written.
  • Draw table, the Eraser and the Border Painter.
  • AutoFit to the contents, to the window or to fixed widths, and
    distribute rows and columns evenly.
  • Table design: a style gallery, Word's six style options (header row,
    total row, banded rows, first column, last column, banded columns) and a
    border pen. Word and RTF carry the look.
  • Tables as data: Word's formulas (SUM, AVERAGE, COUNT, MIN,
    MAX, PRODUCT over ABOVE, BELOW, LEFT or RIGHT), column types,
    filtered rows, hidden columns, and a chart made from a table. Pastes from
    Excel and Google Sheets keep their numbers and booleans.
  • Freeze the header row and the first column, cell padding and vertical
    alignment, tables inside tables, and Table ▸ Insert caption.
  • Header rows repeat on every printed page.

Lists

  • Numbered by level, as in Word: 1. then a. then i., and bullets go
    disc, circle, square. A gallery of five schemes, and schemes of your own
    with nine levels and Word's %1.%2. markers.
  • Tasks take a due date and an assignee. An overdue task is marked, and a
    list shows how many are done.
  • Fold an item, and sort a list A to Z.
  • Tab and Shift+Tab nest and lift every selected item, the first item of
    a list included.

Page layout, print and presenting

  • File ▸ Page setup…: paper, orientation, margins, a header and a footer
    with {page} and {pages}, and a watermark.
  • Insert ▸ Section break… starts a section with its own orientation,
    columns or margins.
  • Print and print preview lay out pages. A paragraph goes over at a line,
    a list at an item, and a table at a row with its header row repeated.
  • View ▸ Page view shows the sheets while you edit.
  • File ▸ Print… prints the document alone, not the whole page.
  • View ▸ Present shows the document as slides with the speaker's notes, and
    File ▸ Download as ▸ PowerPoint writes the same slides.

Files

  • New writers: ODT, EPUB, LaTeX, PowerPoint, a fillable PDF form, MDX,
    and a web page in one file.
  • New readers: ODT, the text of a PDF, Notion and Google Docs export
    zips, and MDX.
  • Every format draws what the editor shows.
    • Word and RTF carry callouts, cards and toggles as boxes, columns side by
      side, galleries, code blocks with their title, line numbers and picked-out
      lines, equations as Word equations, numbered note lists, and a task list's
      done count.
    • ODT has real styles: fonts, colours, list styles, table borders and code
      shading. EPUB uses the editor's own styles.
    • PowerPoint numbers numbered lists and carries pictures.
    • LaTeX gets notes, citations and cross-references.
    • Markdown and plain text keep list markers, notes, and what an atom stands
      for: an equation's LaTeX, a video's title and address. The .txt
      download writes bullets, numbers and ☐/☑.
  • File ▸ Download a workspace folder… downloads a folder as one zip.
  • The kit's Word, ODT, RTF, LaTeX and PowerPoint exports run in a worker.

Paste

  • Word keeps its lists, nested, and its fonts.
  • Google Docs keeps its nesting, and its default styles are dropped
    rather than written into every paragraph.
  • Excel and Google Sheets keep numbers and booleans, Notion keeps
    tasks, and code copied from VS Code becomes a code block.
  • Bold, italic, underline and the rest set in a style attribute become
    formatting. Google Docs pastes had lost all their bold.
  • A picture inside a paragraph becomes a block of its own; it was dropped.

Editing

  • Backspace on an empty list item or quote line first takes it out of the
    list or quote. The next Backspace steps back to the line before, as in
    Word.
  • Select all, then Delete, leaves one empty paragraph. It used to leave an
    empty heading and the endnotes.
  • Quote toggles. The toolbar's Quote and Format ▸ Quote take the text
    back out of a quote instead of nesting another.
  • Go to a heading, an anchor or a line (Mod+G), several carets
    (Alt+click, and Mod+D for the next match), snippets, macros
    (F8), and paste special.
  • Vim and Emacs keys, under Tools ▸ Key bindings.

Keyboard and toolbar

  • Quick access: a + that searches everything you can insert, then the
    tools used last and the ones you pinned.
  • The command palette opens on the commands run last and shows the key
    that actually runs each one.
  • The slash menu has an icon and a description for every entry, and new
    entries: To-do list, Video, Tabs and Page break.
  • Google Docs paragraph keys: Mod+Shift+X strikethrough, Mod+Shift+0–6
    normal text and headings, Mod+Shift+7/8/9 lists,
    Mod+Shift+L/E/R/J alignment, Mod+]/Mod+[ indent.
  • Fullscreen shows the document alone, at the page's width or the
    screen's (View ▸ Fullscreen).
  • Customize toolbar applies straight away, without reloading the page.
  • The keyboard shortcuts dialog has a search box.
  • Keyboards outside the US: every everyday shortcut has a key AltGr does
    not use. A Ctrl+Alt shortcut pressed with the left keys now runs even on a
    layout where that combination types a character; AltGr, the right Alt, still
    types it.
  • Ctrl+F opens Find on a freshly loaded page.

Media, links, code and equations

  • An alt text prompt on insert, image galleries with a lightbox,
    a camera photo, a screen capture, markup on a picture and a
    whiteboard.
  • Audio recording with a waveform, and video chapters.
  • Embeds recognised from the address alone: X, GitHub gists, CodePen,
    CodeSandbox, StackBlitz, Figma, Google Maps, Spotify, SoundCloud and Loom.
  • A link to any block, Tools ▸ Check links…, wiki links between
    workspace documents ([[) and a backlinks panel.
  • Code blocks take line numbers, highlighted lines, wrap, a title and
    collapsing. Terminal blocks start each new line with its prompt, and
    diff is a language. JavaScript runs in a sandbox with no network.
  • Format JSON works on a block with no language set, and on selected
    paragraphs of JSON.
  • Graphviz and PlantUML beside Mermaid.
  • Equations: a palette with a preview, numbered display equations, and
    chemistry through \ce{}.
  • YAML front matter, and MDX in and out.

Review, versions, notes and protection

  • Accept or reject every suggestion by one reviewer.
  • Named versions, compared with now, with each other or with a file,
    word by word.
  • Clip a web page's article in, and include one workspace document in
    another
    , kept current.
  • A margin note, a map, a poll, and a block shown only while a
    template variable matches.
  • Redaction, locked sections, the lock screen (with a passkey
    to unlock), digital signatures and an audit log.

Appearance, language and writing

  • **The chrome in German, F...
Read more

1.0.5

Choose a tag to compare

@adityabhalsod adityabhalsod released this 20 Sep 16:07
f424cf4

A blockquote at the end of a document trapped the caret: Enter only ever made
another paragraph inside it. Code blocks had answered this for a long time
(a second Enter, or Mod-Enter); nothing else did.

The gesture, now uniform

Gesture Leaves
Enter on a blank last line Blockquote, callout, card, column, list item, bottom-right table cell
Ctrl/Cmd + Enter Anything, from any depth

What already worked

Checked before changing anything, so this adds rather than rewrites:

  • Code blocks - double-Enter and Mod-Enter
  • Bullet, numbered and task lists - Enter on an empty item lifts out
  • Callout, card, column, toggle, tab, accordion - escapeContainerOnEnter

What this adds

escapeWrapperOnEnter (core) - Enter on the empty last block of a wrapper
carries it out. It asks the schema via NodeType.validContent rather than
naming node types, so it escapes a blockquote and declines inside a table
cell (a tableRow holds only cells) and a timelineItem (a timeline holds
only items). Declining there is deliberate: lifting would produce an invalid
document.

exitEnclosingBlock (core) - Mod-Enter from any depth opens a paragraph
after the outermost block, which the doc always accepts. That is the escape
for every structure the Enter gesture correctly refuses: tables, timelines,
diagrams, a callout nested in a column. In a top-level block it declines, so
the key stays free.

Diagrams are mermaid code blocks, so exitPreformatted already covered
them.

escapeTableOnEnter (extension-table) - Enter on the empty last paragraph
of the bottom-right cell exits below the table. Narrow on purpose: anywhere
else in a table, Enter still makes a paragraph, because cells hold prose.

A bug this change introduced, and fixes

keymap: { ...tableKeymap(), ...blockKeymap() }   // before

Both keymaps now bind Enter, and a spread keeps only the last - the table
escape would have silently never run in the assembled editor. mergeKeymaps
chains bindings for a shared key instead. The table keymap's own comment
already warned about this class of silent loss.

Packages

All 23 packages are released together at 1.0.5.

npm install @trevixal/editor-kit@1.0.5
Package Bundle (min + gzip) Tarball Status
@trevixal/angular 0.3 kB 8.1 kB published
@trevixal/core 36.5 kB 156.2 kB published
@trevixal/editor-kit 14.1 kB 234.6 kB published
@trevixal/extension-blocks 6.8 kB 35.0 kB published
@trevixal/extension-code-highlight 6.1 kB 27.2 kB published
@trevixal/extension-diagram 2.4 kB 12.3 kB published
@trevixal/extension-embed 5.8 kB 28.3 kB published
@trevixal/extension-emoji 1.9 kB 9.0 kB published
@trevixal/extension-export 18.8 kB 55.9 kB published
@trevixal/extension-format-code 1.9 kB 9.5 kB published
@trevixal/extension-image 9.8 kB 40.4 kB published
@trevixal/extension-math 7.7 kB 27.7 kB published
@trevixal/extension-security 2.9 kB 13.6 kB published
@trevixal/extension-slash-command 0.8 kB 7.6 kB published
@trevixal/extension-table 10.4 kB 41.7 kB published
@trevixal/extension-track-changes 3.1 kB 12.9 kB published
@trevixal/extension-workspace 11.4 kB 44.9 kB published
@trevixal/extension-writing 8.8 kB 34.5 kB published
@trevixal/react 1.0 kB 8.7 kB published
@trevixal/svelte 0.3 kB 7.1 kB published
@trevixal/ui 50.0 kB 224.3 kB published
@trevixal/vue 0.8 kB 8.2 kB published
@trevixal/web-component 1.1 kB 39.3 kB published

Bundle is what a browser pays for that package alone: bundled, minified and
gzipped with its peers external. Tarball is the download from npm.

1.0.4

Choose a tag to compare

@adityabhalsod adityabhalsod released this 20 Sep 07:27
ba9c6d6

First release published by the new flow: creating this release is the
whole process.

Documentation

Every package README now opens with CI, version, types and license
badges, links to the docs and the live editor, a screenshot, what the
package does, and what it costs. Links are absolute, because npm renders
a README from the tarball alone and a relative link 404s there.

A Trevixal vs Tiptap
comparison, with both sides installed and measured rather than quoted.

Inside

Releases are driven by GitHub releases, and the 23 packages publish in
parallel, each authenticating with its own OIDC identity. No tokens.

CI runs on every branch and now includes lint and coverage.

No functional change to any package: this release is documentation and
the release machinery.

Packages

All 23 packages are released together at 1.0.4.

npm install @trevixal/editor-kit@1.0.4
Package Bundle (min + gzip) Tarball Status
@trevixal/angular 0.3 kB 8.1 kB published
@trevixal/core 36.2 kB 154.3 kB published
@trevixal/editor-kit 14.1 kB 234.1 kB published
@trevixal/extension-blocks 6.8 kB 35.0 kB published
@trevixal/extension-code-highlight 6.1 kB 27.2 kB published
@trevixal/extension-diagram 2.4 kB 12.3 kB published
@trevixal/extension-embed 5.8 kB 28.3 kB published
@trevixal/extension-emoji 1.9 kB 9.0 kB published
@trevixal/extension-export 18.8 kB 55.9 kB published
@trevixal/extension-format-code 1.9 kB 9.5 kB published
@trevixal/extension-image 9.8 kB 40.4 kB published
@trevixal/extension-math 7.7 kB 27.7 kB published
@trevixal/extension-security 2.9 kB 13.6 kB published
@trevixal/extension-slash-command 0.8 kB 7.6 kB published
@trevixal/extension-table 10.2 kB 40.6 kB published
@trevixal/extension-track-changes 3.1 kB 12.9 kB published
@trevixal/extension-workspace 11.4 kB 44.9 kB published
@trevixal/extension-writing 8.8 kB 34.5 kB published
@trevixal/react 1.0 kB 8.7 kB published
@trevixal/svelte 0.3 kB 7.1 kB published
@trevixal/ui 50.0 kB 224.3 kB published
@trevixal/vue 0.8 kB 8.2 kB published
@trevixal/web-component 1.1 kB 39.1 kB published

Bundle is what a browser pays for that package alone: bundled, minified and
gzipped with its peers external. Tarball is the download from npm.