Add project-mode tooling: characters, outline, diff and revision status
Rounds out project mode, where the workspace is the project root and one subfolder holds the manuscript proper: - Characters and Outline windows, backed by new `characters` and `outline` modules that read the cast from character sheets and measure how much of the snowflake outline is actually written. - Edit ▸ Changes… diffs the open file against its last committed version. - Revision status, per-file and project word counts, an archive action and hidden folders in the file panel. - Chapter-file export alongside the ODT master, richer header parsing, and a project word list for names and invented terms. - The export path now follows the workspace: opening a project points it at that project root, keeping a file name you chose yourself and re-deriving one that merely echoed the folder it sat in. - Clicking an issue in the grammar/spelling panel takes the editor to it, selecting the words and centring them; applying a suggestion jumps to the rewritten text as well. README covers the new windows and workflows. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017bSn3Xijp8GofZVUnRX4oq
This commit is contained in:
@@ -26,7 +26,7 @@ impl App {
|
||||
/// Fold any new header field names from the current buffer into the list, so
|
||||
/// a field you just invented autocompletes without reopening the workspace.
|
||||
pub(super) fn merge_field_names_from_buffer(&mut self) {
|
||||
let found = header_field_names(&self.buffer, &self.config.draft_marker);
|
||||
let found = header_field_names(&self.document(), &self.config.draft_marker);
|
||||
let mut added = false;
|
||||
for f in found {
|
||||
if !self.field_names.iter().any(|n| n.eq_ignore_ascii_case(&f)) {
|
||||
|
||||
Reference in New Issue
Block a user