Repository navigation
Releases: adityabhalsod/trevixal-editor
Release list
1.1.0
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)andI. 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
.docxthese are Word's own: heading numbering,SEQ,REF,TOC,
XEandINDEXfields, 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,PRODUCToverABOVE,BELOW,LEFTorRIGHT), 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.thena.theni., 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 ☐/☑.
- Word and RTF carry callouts, cards and toggles as boxes, columns side by
- 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
styleattribute 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, andMod+Dfor 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+Xstrikethrough,Mod+Shift+0–6
normal text and headings,Mod+Shift+7/8/9lists,
Mod+Shift+L/E/R/Jalignment,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. ACtrl+Altshortcut 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+Fopens 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...
1.0.5
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() } // beforeBoth 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
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.