Skip to content

Claude/fiction analysis tool vb1p h - #60

Merged
mekado11 merged 4 commits into
gh-pagesfrom
claude/fiction-analysis-tool-vb1pH
Sep 21, 2026
Merged

mekado11 merged 4 commits into
gh-pagesfrom
claude/fiction-analysis-tool-vb1pH

Conversation

@mekado11

Copy link
Copy Markdown
Owner

No description provided.

The homepage never loaded Firebase auth until someone clicked "Sign in", so a
returning author always saw the signed-out nav, and the sign-in dialog opened
even though their session was intact. The session itself was never lost.

- The workspace leaves a small hint (ml_signed_in) on sign-in and clears it on
  sign-out. When the hint is present the homepage loads auth immediately, keeps
  the Sign in / Get started buttons out of sight until Firebase answers, and
  shows "Open workspace". Firebase alone decides whether a session exists; the
  hint only decides whether to ask before a click.
- Sign in, Get started, and the demo banner's "Create a free account" link now
  wait for the restored session (up to 5s) and open the workspace instead of a
  dialog for someone already signed in.
- The pricing page waits for the restored session instead of reading
  currentUser before the SDK has loaded it.
- Smoke test: after using the workspace, the homepage shows "Open workspace",
  hides Sign in, and index.html#signup opens the workspace.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWzYm8L13Mra3ihjhuCM2U
Next to "Open workspace" the homepage now offers "Sign out". It ends the
Firebase session, drops the sign-in hint and this tab's session cache, and the
auth listener restores the signed-out nav. Drafts in local storage are left to
the workspace's own recovery flow.

The in-memory Firebase double now notifies auth listeners on signOut, as the
real SDK does; the smoke test signs out from the nav and checks the buttons
and hint.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWzYm8L13Mra3ihjhuCM2U
…, unscored style

False findings removed
- Passive voice no longer matches any word ending in "-en" ("was then", "was open",
  "were seven"); irregular participles are listed by word, and "gone"/"fallen" are out
  because they are intransitive. Non-participle "-ed" words ("red", "naked", "indeed")
  join the exceptions.
- Grammar: "as if she were" and other subjunctives are not agreement errors; a lowercase
  word after "!" inside speech is cadence, not a capitalisation error; "gave her her own
  way" is a double object, not a doubled word.
- The missing-comma dialogue-tag rule matched straight quotes only and treated a comma
  before the closing quote as missing, so every correctly punctuated tag typed with
  straight quotes was flagged and no smart-quoted one ever was. It now accepts the
  comma and reads both quote styles.
- Repetition drops its fixed synonym table ("said" → "stated, remarked"); the finding
  names the echo and leaves the word to the author, with no auto-fix. Function words
  and the invisible tags said/asked are no longer echoes.

Scores that punished ordinary prose
- Transitions judges prose-to-prose paragraph boundaries only. Boundaries into or out
  of a spoken line or a chapter heading are counted and shown, never scored; fewer
  than three measurable boundaries is "not measured", not 0. The Secret Garden sample
  moves from 26 to 67 with 406 dialogue boundaries set aside.
- Line editing no longer scores sentence-to-sentence word overlap (a published novel
  ran 78% "unsupported" and sat at the maximum penalty) or pronoun-mix POV (a
  first-person narrator describing anyone else read as mixed). Both stay as
  descriptions.
- Copy Editing scores the set the workbench lists; grammar has its own dimension and
  is not counted twice.

Style & Voice is described, not scored
- Its thresholds were never crossed by real prose, so every manuscript scored 100 and
  the dimension only inflated the overall. Measurements stay; the card shows "—" and
  the overall renormalises. The first-person regex is now case-insensitive and a
  first-person narrator is called first person.

Dialogue
- A tag adverb must sit on a speech verb ("said Mary coldly"), so "not only" after a
  quote is not one, and three-token tags are now caught. Fewer than ten lines is too
  few to score a density.

UI: a null score renders as "not scored" or "—", never as 0; Transitions and Line
Editing detail rows say what was measured and what was set aside.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWzYm8L13Mra3ihjhuCM2U
… tension words

The old fiction plot score was four booleans over a keyword lexicon ("conflict, danger,
fight…") in four equal quarters: possible values 0/33/67/100, a quiet literary novel
scored 0, and an excerpt was judged as a whole book. It is replaced by a structure
model built from how the manuscript is put together.

Units: chapters from headings, else scene breaks, else equal segments cut at paragraph
boundaries (sized to a book or a chapter). Each unit reports its word count and, from the
passage classifier, how much of it is scene (action and dialogue) against summary
(reflection, description, exposition), plus mean sentence length and the named cast
present.

Components, each with its basis in words:
- rhythm: scene share varies across units (full credit at a 25-point range)
- shape (full manuscripts only): the most scene-heavy unit sits in the back half and the
  final unit comes down from it; a flat curve has no peak to place and says so instead
  of being penalised twice
- unit length control: units within 0.3x to 3x the manuscript's own median
- cast persistence: named characters recur across units; the lead is present in most

The score is the mean of the components that could be assessed; everything that could
not be is listed under "Not assessed" with the reason. The methodology states what is
not measured: stakes, causality and what a character wants. Characters are analysed
once and shared with the structure model.

UI: the left rail shows scene share across the last two units, the card shows the scene
share by unit and the peak, the Detailed tab shows units, peak, release, range, length
control, cast and what was not assessed, and the next-step text is built from the
components. Book intelligence evidence follows the new fields.

Tests: ordering late peak > early peak > flat, segment and scene-break fallbacks, the
too-short case, per-unit provenance, the pipeline wiring, and the no-classifier case.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWzYm8L13Mra3ihjhuCM2U
@vercel

vercel Bot commented Sep 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
manuscriptlens Ready Ready Preview Sep 21, 2026 10:05pm UTC

@mekado11
mekado11 merged commit 2669d40 into gh-pages Sep 21, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview — 13d41faf Deployed Sep 21, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants