You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Custom themes — write your own colour scheme and drop it into the Themes folder beside your settings, and it joins the theme picker in Settings, Appearance. Two formats work: a JSON file listing just the design tokens you want to change, where everything you leave out keeps its default, or a CSS stylesheet for a theme that needs rules a colour table cannot express. A stylesheet applies only while its theme is selected, so it can never bleed into another one. Type, spacing, and corner radii stay as Novalist sets them whichever palette you pick.
Language packs — drop a JSON locale file into the Locales folder beside your settings and that language appears in Settings, Appearance, Interface Language under its own name. A partial translation is fine: anything it leaves out falls back to English, so a file with a handful of strings is usable straight away. A file whose code matches a language Novalist already ships patches that language instead of replacing it, so you can correct a term you dislike without maintaining a whole translation.
Word lists for more writing languages — the Inspector's automatic emotion, intensity, conflict, and tag detection can now be taught a language Novalist does not ship, by dropping a word-list file into the Analysis folder beside your settings. A file there also overrides a bundled list, so you can extend the English, German, or Chinese lists with your own vocabulary. This also feeds the Dialogue view's speaker detection.
Themes folder and Languages folder buttons in Settings, Appearance, which open those folders so you do not have to hunt for them.
Dialogue view — a new view that gathers every line one character speaks across the whole book and lays it out in story order, so you can see whether their voice drifts over the course of the story. Lines are grouped by the scene's in-world date, with scenes that carry no date continuing the run before them rather than being pushed to the end, and each scene has a button to jump straight to it. Pick a speaker from the roster on the left, filter it by name, or open the Unassigned list to see the lines nobody could be traced to. Find it in the Plan group of the activity bar, after the Relationships graph.
Automatic speaker detection — the Dialogue view works out who says each line from your prose alone, offline: an entity mention you placed in the dialogue tag, a speech verb beside a character's name, a second line continuing the same paragraph, a pronoun the surrounding narration can only mean one way, or back-and-forth alternation in a two-hander. It matches given names, full names, and every alias in the Codex, ignores names inside the quote marks (someone being spoken to is not the speaker), and recognises the quote styles for English, German, and Simplified Chinese, so a German manuscript in low quotes reads as well as an English one. Every line says how it was worked out — named, inferred, nearby, guessed, or unknown — so you always know which attributions to trust. A line nothing could be settled for is left unassigned rather than guessed at.
Pronoun tags — a line tagged only "he said" or "brummte er" is credited to the character the narration names around it, but only when exactly one character of that gender is named there, so an ambiguous passage is never guessed at. Novalist looks at the paragraphs above the line and, for a scene that opens on a pronoun and names the character just after, the paragraphs below. This reads the Gender field on your characters, so filling it in makes attribution noticeably better.
Clickable speaker suggestions — every line the prose does not name outright now offers its likely speakers with a percentage each, showing how the evidence splits between them. Click one to assign the line. Suggestions draw on who the narration names nearby and who has already spoken in the scene, so even a line with no dialogue tag at all usually puts the right name first.
Correcting who said what — reassign any line to another character from the dropdown beside it. The list offers your whole cast, not just the characters who already have lines, so somebody whose every line was misattributed is still pickable. Your choice is kept, marked as yours, and survives later edits to the scene; picking Unassigned clears a wrong guess without naming a replacement.
Editing dialogue in place — click a line in the Dialogue view to rewrite it, and the change is written straight into the scene file. You edit only the words inside the quote marks; the dialogue tag and the narration around it are left exactly as they were, and are shown greyed beside the line so you can tell two similar lines apart. A snapshot is taken before every edit, a line containing formatting is shown read-only rather than risking its markup, and an edit is refused with an offer to reload if you changed the same scene in the editor meanwhile.
Fixed
The Override for this project checkbox in Settings now shows whether the project actually overrides that section. It used to start unticked every time you opened Settings, even for a project that had its own appearance, editor, or writing settings — so the section looked global while the project's own values were still in force, and editing a field wrote to your global defaults while the control appeared not to change anything. The checkbox now reads what is stored with the project, so it is the same every visit.
Ticking that checkbox now pins the section's current values to the project immediately, instead of only taking effect once you edited a field. Unticking still clears the section and returns it to your global values, and a line under the checkbox now says which of the two you are editing.
Turning off an Appearance override that changed the interface language now tells extensions about the language change, so an extension's own labels revert along with the rest of the app.
The cursor no longer jumps backwards to the end of the previous paragraph a few seconds after you click or arrow onto a line. It happened when the spelling and grammar check finished in the background: an empty line, or the very start of a line, was indistinguishable from the end of the paragraph above it, so restoring your position landed you one paragraph too far back. Your place on the line is now kept exactly, and a check that finishes after you have clicked away no longer pulls the cursor back into the text.