diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 6417993..433e0c5 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -37,6 +37,7 @@ jobs:
with:
python-version: '3.12'
- run: python -m unittest discover -s tests -p test_documentation_tools.py -v
+ - run: python -m unittest discover -s docs/tests -p 'test_*.py' -v
- run: python scripts/docs_tool.py check
- run: python scripts/docs_tool.py render-wiki --output test-results/wiki-preview
- uses: actions/upload-artifact@v4
@@ -61,3 +62,32 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
run: python scripts/docs_tool.py publish-wiki
+ - name: Verify the published wiki against the checked documentation
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: |
+ set -eu
+ git -c credential.helper= -c 'credential.helper=!gh auth git-credential' clone --depth 1 https://github.com/AronAxe/GraphPaper.wiki.git /tmp/graphpaper-wiki-verify
+ python - <<'PYVERIFY'
+ from pathlib import Path
+ import hashlib,json,subprocess
+ from scripts.docs_tool import render
+ root=Path.cwd();wiki=Path('/tmp/graphpaper-wiki-verify')
+ conf,pages=render(root)
+ for name,expected in pages.items():
+ actual=(wiki/name).read_text(encoding='utf-8')
+ assert actual==expected,'Published wiki differs: '+name
+ manifest=json.loads((wiki/'.graphpaper-wiki.json').read_text())
+ assert manifest['docs_version']==conf['docs_version']
+ for name,expected in pages.items():
+ assert manifest['files'][name]==hashlib.sha256(expected.encode()).hexdigest()
+ report={'ok':True,'docs_version':conf['docs_version'],'source_revision':subprocess.check_output(['git','rev-parse','HEAD'],text=True).strip(),'wiki_revision':subprocess.check_output(['git','-C',str(wiki),'rev-parse','HEAD'],text=True).strip(),'guides':len(conf['pages']),'navigation_files':2,'verified_files':sorted(pages)}
+ output=root/'test-results/wiki-publication';output.mkdir(parents=True,exist_ok=True)
+ (output/'report.json').write_text(json.dumps(report,indent=2)+'\n')
+ for name in pages:(output/name).write_bytes((wiki/name).read_bytes())
+ print(json.dumps(report,indent=2))
+ PYVERIFY
+ - uses: actions/upload-artifact@v4
+ with:
+ name: published-wiki-verification
+ path: test-results/wiki-publication/
diff --git a/README.md b/README.md
index 11e053e..71164d2 100644
--- a/README.md
+++ b/README.md
@@ -55,8 +55,8 @@ The portable build needs Microsoft Edge WebView2 and is currently unsigned. Exis
## What makes it useful
-- **Explore before committing.** Inspect source-linked concepts and relationships, follow paths, pin ideas and compare competing angles. Edit a suggested thesis or write your own.
-- **Keep your voice.** Learn an editable style profile from your writing samples or selected articles at an author URL. Adjust its influence rather than accepting a generic house style.
+- **Explore before committing.** Orbit or flatten the graph, filter and focus its neighborhoods, and edit nodes and connections directly. Follow source links, pin ideas, undo graph edits and choose your own angle.
+- **Keep your voice.** Save a reusable voice graph from your writing samples or selected articles, then apply it across projects without retraining. Edit its habits and influence; your current instructions remain in charge.
- **Improve prose without losing the original.** Humanize and Deslop offer separate or combined passes, protected factual spans, side-by-side proposals and explicit acceptance.
- **Work from a project folder.** Drop documents into a project’s Inbox. Role-specific subfolders distinguish evidence, canon, inspiration and voice samples; idle-time imports do not trigger paid model calls.
- **Choose where reasoning happens.** Configure writer, editor and extraction models separately, with provider-native reasoning controls. Optional JEV evaluates graph candidates, evidence gaps and revision decisions.
@@ -64,16 +64,19 @@ The portable build needs Microsoft Edge WebView2 and is currently unsigned. Exis
## Inside GraphPaper
-
-*The graph workspace, using the included illustrative project.*
+
+*Actual v0.6 interface: the included illustrative project, spatial graph controls and colored connections. [Visual tour and capture provenance](docs/VISUAL-TOUR.md).*
-Science research desk and writing workspace
+Science, writing and reusable voice graphs — v0.6 screenshots
-
+
*Actual interface with clearly labelled synthetic workflow-test material.*
-
+
+
+
+*The editable voice mini-graph, with a synthetic style example. Save once, reuse across projects.*
diff --git a/docs/CONNECTIONS.md b/docs/CONNECTIONS.md
index 7185d14..8065c06 100644
--- a/docs/CONNECTIONS.md
+++ b/docs/CONNECTIONS.md
@@ -53,6 +53,8 @@ Higher effort can increase latency and token consumption. It does not set the ma
JEV has its own **Auto, OpenRouter, TypeSafe or Off** selector. Auto prefers an available OpenRouter credential, then direct TypeSafe. It does not silently switch routes after a failed paid request.
+The application preflights serialized request size and automatically batches decisions. Voice training articles are excluded from those requests; optional decisions that cannot fit stay unscored. [Request-sizing behavior](VOICE-GRAPHS.md#why-jev-no-longer-receives-the-whole-heap).
+
Without JEV, writing remains available and graph candidates are explicitly unscored. Codex OAuth does not include a JEV connection. [JEV’s role in the workflow →](GRAPH-AND-JEV.md)
## Scholarly database keys
@@ -67,6 +69,6 @@ Advanced settings include maximum requests per job, output-token cap, context bu
Never put keys into prompts, screenshots, issue reports or project documents. [Credential storage and privacy →](SECURITY.md)
-## External Graphify in 0.3.1
+## External Graphify
Choose **Graphify (external process)** under Advanced limits & Graphify. Leave the custom path blank for the included Windows runtime. **Check Graphify runtime** does not call a model. The external action now uses this same provider connection, including Codex OAuth, with the extraction-role model and reasoning setting. [Detailed setup and distribution](UPDATE-0.3.1.md).
diff --git a/docs/FAQ.md b/docs/FAQ.md
new file mode 100644
index 0000000..0146fa8
--- /dev/null
+++ b/docs/FAQ.md
@@ -0,0 +1,57 @@
+# Frequently asked questions
+
+These answers describe GraphPaper **0.6.0**. For error-specific steps, see [Troubleshooting](TROUBLESHOOTING.md).
+
+## Do I need to rebuild my graph after upgrading?
+
+No. Open the existing project's Graph tab. The new renderer works with stored graphs. Rebuild when source material changes and you need fresh extraction, not merely because the interface changed. [Graph studio](GRAPH-STUDIO.md).
+
+## Why am I seeing only 60 nodes?
+
+That is the default display budget, not the size of the stored graph. **Show** offers 40, 60, 100 or 180 nodes; at most 360 connections are drawn at once. Search examines the whole graph, including nodes outside the current overview. Nothing is deleted by a display filter.
+
+## How do I untangle a dense graph?
+
+Click the important node and choose **Focus here**. Use one or two hops, filter node/connection types, or **Spread nodes apart**. Scroll to zoom, drag the canvas to orbit, Shift-drag to pan, and switch to **2D** for a flat view. **Fit graph** and **Reset filters** provide a route back. [All controls](GRAPH-STUDIO.md#navigate-without-losing-the-thread).
+
+## Can I edit the graph rather than just look at it?
+
+Yes. Click a node or a connection, edit its fields and choose **Save node** or **Save connection**. **Add node**, **Connect nodes** and confirmed deletion are available. **Undo edit** can reverse up to 25 recent manual graph edits, but does not overwrite a graph that has since been rebuilt or replaced. Source documents and the manuscript are separate from these edits.
+
+## Is 3D a real interactive view?
+
+Yes: XYZ positions are projected with perspective and depth sorting, and you can rotate the view. It is rendered using SVG, not WebGL, so it does not require a separate GPU graph engine. It is not a generated mockup. Camera and arranged positions are local view settings and are not currently part of a portable project export.
+
+## How do I reuse my writing voice?
+
+Save the profile under **Your writing voice → Save as reusable voice**. In another project, select it in **My voices → Use in this project**. The compact voice graph is applied without copying the training articles or running a model. To create a new voice, add material under the library's Training pieces and learn it once. [Reusable voices](VOICE-GRAPHS.md).
+
+## Can a voice force polite language or override my current brief?
+
+The saved voice is a default, not an editor with veto power. Your current brief and explicit instructions take precedence. Strong language, sarcasm, satire and indignation are valid choices; rhetorical force does not require lowering evidence requirements. Use Polemic or Nonfiction's **Develop and defend my position**, then refresh old angles. [Authorial intent](POLEMIC.md).
+
+## Does Codex sign-in also authenticate JEV?
+
+No. Codex supplies the writing/extraction route. JEV has a separate OpenRouter or TypeSafe connection and is optional. With it off, writing remains available and missing evaluations are not presented as real scores. [Connections](CONNECTIONS.md#optional-jev).
+
+## Why did an older version say JEV exceeded 60,000 characters?
+
+That was an application request-sizing failure. Since v0.5, requests are checked by their serialized UTF-8 size and split by questions/candidates before sending. JEV receives compact voice context, not the raw training library. An indivisible oversized optional decision remains explicitly unscored rather than aborting completed writing. The 60 KB budget is GraphPaper's transport budget, not a universal JEV limit. [Request sizing](VOICE-GRAPHS.md#why-jev-no-longer-receives-the-whole-heap).
+
+## Do I need to install Graphify separately?
+
+Not for the Windows release. Select **Graphify (external process)** and leave **Custom Graphify executable** empty to use the included 0.9.80 runtime. **Check Graphify runtime** makes no model call. An explicit custom path takes precedence and must be compatible. [Setup](CONNECTIONS.md#external-graphify).
+
+## What uses model allowance or API credit?
+
+Extraction, learning a voice, generating angles/outlines/drafts, model review and prose-editing passes can make calls. Navigation, manual edits, applying a saved voice, exporting and local prose inspection do not. A connection test makes a small real call. URL fetching and database search are separate network operations. Missing provider cost is unknown, not free; cancellation cannot refund a submitted request.
+
+## Where are my projects, voices and backups?
+
+The normal Windows directory is `%LOCALAPPDATA%\GraphPaper`. SQLite holds project state and the global voice library; project folders hold imports and preserved originals. Project JSON exports include the project's applied compact voice snapshot, not the complete global training library or revision history. Close the application and back up its data directory for complete local history; protect credentials in that backup. [Storage and recovery](PROJECTS-AND-SOURCES.md).
+
+## Does Science mode perform experiments or guarantee journal acceptance?
+
+No. It supports scholarly search, screening, source appraisal and manuscript preparation. Do not represent a literature-based manuscript as an experiment the software conducted. APA formatting and an export checklist do not replace author verification, editorial peer review or ethics approval. [Science workflow](SCIENCE.md).
+
+[Getting started](GETTING-STARTED.md) · [Visual tour](VISUAL-TOUR.md) · [Troubleshooting](TROUBLESHOOTING.md)
diff --git a/docs/GETTING-STARTED.md b/docs/GETTING-STARTED.md
index ec2af16..fd5c285 100644
--- a/docs/GETTING-STARTED.md
+++ b/docs/GETTING-STARTED.md
@@ -28,10 +28,11 @@ Leave reasoning at **Provider default** initially, or load the model catalog and
Give it a working title, a target length and a direction. Choose a mode deliberately:
- **Nonfiction:** source-linked articles and essays.
+- **Polemic:** argument, satire and opinion that preserve your stated position.
- **Fiction:** stories, character decisions, scenes and canon.
- **Science:** scholarly searching, evidence appraisal and academic manuscripts.
-Mode is chosen at project creation; the interface does not provide a conversion button for an existing project. A title can be changed without changing the project’s identity or folder.
+For an existing project, choose **current mode · Change**, select the mode and apply it. Sources, graph, voice, angles, outline and manuscript remain stored. Check the Creative brief and refresh affected generated work afterward; changing modes does not silently rewrite it. A title can be changed without changing the project’s identity or folder.
## 4. Add useful material
@@ -39,11 +40,13 @@ In **Sources**, upload supported documents, paste text or import a public articl
For fiction, a premise and canon in the **Creative brief** can be enough to begin. Science starts at the **Research** desk; include retrieved papers to turn them into project evidence sources.
+For a reusable style, open **My voices** from the voice controls and use a saved voice, or add training pieces there and learn one. Existing learned profiles can be saved through **Your writing voice → Save as reusable voice** without retraining. [Voice graphs](VOICE-GRAPHS.md).
+
The **Project folder** button opens the workspace in Explorer. Files dropped into its Inbox are imported while the project is open and idle; that import alone does not run an AI task. [Sources and folders →](PROJECTS-AND-SOURCES.md)
## 5. Explore, choose and structure
-For nonfiction or fiction, build the graph. Select concepts and relationships to inspect their source anchors. Pin ideas you want to emphasize; exclude distractions. Then **Discover angles**.
+For nonfiction, fiction or polemic, build the graph once from your material. An existing graph needs no rebuild just to use the v0.6 interface. Drag the background to orbit, Shift-drag to pan and scroll to zoom, or choose **2D**. Select a node or line to inspect and edit it; **Focus here** reduces clutter. Pin ideas you want to emphasize; exclude distractions. Then **Discover angles**. [Graph navigation, editing and undo](GRAPH-STUDIO.md).
Choose a suggested direction, edit its thesis or write your own. Develop an outline and review each section’s purpose, source assignments and word allocation before generating a full draft.
diff --git a/docs/GRAPH-AND-JEV.md b/docs/GRAPH-AND-JEV.md
index cc30d87..3e18bbf 100644
--- a/docs/GRAPH-AND-JEV.md
+++ b/docs/GRAPH-AND-JEV.md
@@ -24,13 +24,13 @@ External Graphify nodes also retain source-file links. These pointers support re
## Navigate and guide discovery
-Select nodes or relationships to inspect descriptions and evidence. Drag nodes, pan, zoom or fit the view. Search by label to find relevant concepts in a large graph.
+Select nodes or relationships to inspect descriptions and evidence, or edit their wording. In 3D, drag the background to orbit, Shift-drag to pan, and scroll to zoom; 2D gives a flat pannable view. Search the whole graph by titles, notes or relationship names. **Focus here**, type filters and connection filters reduce clutter. [Full graph controls, editing and undo](GRAPH-STUDIO.md).
**Pin** concepts to emphasize them. **Exclude** distractions from candidate discovery. Edit the direction and the exploration/evidence-discipline settings beside the graph. These controls influence exploration; they do not permit unsupported reasoning.
**Find a path** highlights an undirected conceptual connection between two nodes. The highlighted sequence is not a causal proof. A graph can connect two concepts through a vague intermediate node while contributing little to a defensible article.
-For responsiveness, the view displays at most 180 nodes at a time; the complete graph remains in the project. Imports are bounded to 5,000 nodes and 20,000 edges. The interface shows when it is displaying only part of a large graph.
+The default overview displays 60 nodes; **Show** offers 40, 60, 100 or 180. At most 360 links are drawn. These are view limits: the complete stored graph remains available to search and downstream work. Imports are bounded to 5,000 nodes and 20,000 edges. The footer reports displayed versus stored data.
## How angles are discovered
@@ -51,6 +51,10 @@ This is more than a score attached to a finished article. It helps decide which
With JEV off, structural exploration still works and results are not given fabricated scores. With the optional automatic refinement enabled, an unconfirmed revision can be retained as a candidate version rather than replacing the original. A recommendation to research is a workflow signal; in ordinary nonfiction it does not mean a web search has secretly run.
+## Request sizing and voice context
+
+JEV receives compact style-graph context and relevant decision material, not raw voice-training articles. The complete serialized UTF-8 envelope is checked before sending; candidates and questions are automatically batched while preserving their IDs. The 60 KB limit is an application transport budget, not a general JEV capability limit. An indivisible oversized optional decision stays explicitly unscored; it does not abort completed writing or approve a revision by default. [Details](VOICE-GRAPHS.md#why-jev-no-longer-receives-the-whole-heap).
+
## When to rebuild
After adding, changing, excluding or reclassifying sources, rebuild before relying on graph coverage. Scientific screening can change the enabled evidence set as well. Inspect important connections again when their underlying material changes.
@@ -59,4 +63,4 @@ A stronger graph is useful only if it leads to a better argument or story. The [
## Argument-led angle discovery
-Polemic generates alternative routes into your thesis, not alternative opinions on whether you may hold it. JEV now receives the author voice and editorial contract and scores stance/voice fidelity explicitly. Counterarguments are optional and must be directly consequential. Brief or voice changes mark old angles as stale; refresh them without re-running Graphify. [Authorial-intent controls](POLEMIC.md).
+Polemic generates alternative routes into your thesis, not alternative opinions on whether you may hold it. JEV receives compact author-voice context and the editorial contract and scores stance/voice fidelity explicitly. Counterarguments are optional and must be directly consequential. Brief or voice changes mark old angles as stale; refresh them without re-running Graphify. [Authorial-intent controls](POLEMIC.md).
diff --git a/docs/GRAPH-STUDIO.md b/docs/GRAPH-STUDIO.md
index 1d25c8b..efd6af6 100644
--- a/docs/GRAPH-STUDIO.md
+++ b/docs/GRAPH-STUDIO.md
@@ -1,5 +1,8 @@
# The graph studio: ink, paper and space
+
+*Actual v0.6 graph workspace using the included illustrative example. [Capture details](VISUAL-TOUR.md).*
+
GraphPaper 0.6 replaces the green-on-green interface with charcoal/ink-blue surfaces, colored graph semantics and a **real scanned sheet of graph paper** in the sidebar. The sidebar asset is bundled locally; viewing it does not call an image service or require an internet connection. Attribution appears at the bottom of the sidebar and in the package's `ASSET-CREDITS.md`.
## Navigate without losing the thread
diff --git a/docs/INTEGRATIONS.md b/docs/INTEGRATIONS.md
index 33c1835..4e79108 100644
--- a/docs/INTEGRATIONS.md
+++ b/docs/INTEGRATIONS.md
@@ -1,6 +1,6 @@
# Integration reference
-This page describes the interfaces implemented in GraphPaper 0.3.1. User-facing setup is in [Models and reasoning](CONNECTIONS.md). External endpoints, model IDs and capability vocabularies can change independently; consult the linked primary documentation and test a connection before a large job.
+This page describes the interfaces implemented in GraphPaper 0.6.0. User-facing setup is in [Models and reasoning](CONNECTIONS.md). External endpoints, model IDs and capability vocabularies can change independently; consult the linked primary documentation and test a connection before a large job.
## Writing providers
@@ -28,6 +28,8 @@ Requests include `model`, `state` and typed `questions`, with bearer authorizati
Auto prefers available OpenRouter credentials, then direct TypeSafe; it does not silently fail over after a rejected paid request. No connection means no fabricated JEV score. The application’s combined editorial score is not a calibration result.
+The `model`/`state`/`questions` envelope is sized in UTF-8 bytes before sending. Candidate/question batching and compact style-graph context prevent the former oversized-state failure. Original question keys are retained when answers are combined; unscored optional decisions are distinct from API or typed-answer errors. [Voice graphs and request sizing](VOICE-GRAPHS.md).
+
Primary references: [OpenRouter JEV guide](https://openrouter.ai/docs/guides/community/jev-tutorial), [TypeSafe quickstart](https://docs.typesafe.ai/introduction/quickstart), [TypeSafe SDK constants](https://docs.typesafe.ai/sdk/python/api/constants).
## Scholarly adapters
@@ -60,6 +62,6 @@ Primary references: [public Graphify distribution](https://pypi.org/project/grap
## Local API and desktop bridge
-The local API is a session-protected implementation interface, not a public multi-tenant service. Routes cover projects, sources, graph operations, jobs, settings, prose proposals, scientific research and exports. Inspect [server.py](../graphpaper/server.py), [studio_routes.py](../graphpaper/studio_routes.py) and [science_routes.py](../graphpaper/science_routes.py) for current schemas.
+The local API is a session-protected implementation interface, not a public multi-tenant service. Routes cover projects, sources, graph operations, jobs, settings, prose proposals, scientific research and exports. Inspect [server.py](../graphpaper/server.py), [studio_routes.py](../graphpaper/studio_routes.py) and [science_routes.py](../graphpaper/science_routes.py) for the base schemas; [graph editing routes](../graphpaper/graph_editing.py) and [voice library routes](../graphpaper/voice_routes.py) cover the current graph/voice extensions.
The native bridge is intentionally narrow; its four methods are `notify_ready`, `save_export`, `request_close` and `cancel_close`. Do not attach public native/store objects to it. [pywebview API](https://pywebview.flowrl.com/api/) provides the underlying desktop contract.
diff --git a/docs/PROJECTS-AND-SOURCES.md b/docs/PROJECTS-AND-SOURCES.md
index 23e1c96..1e0ac3a 100644
--- a/docs/PROJECTS-AND-SOURCES.md
+++ b/docs/PROJECTS-AND-SOURCES.md
@@ -13,6 +13,10 @@ A project brings together its brief, sources, graph, angles, outline, draft and
Open a source to read the extracted text and change its role. Excluding a source from use does not erase its saved text. Changes to the material can invalidate graph coverage, voice profiles or scientific appraisals; the relevant stage should be refreshed.
+## Reusable voices are separate
+
+Prefer the **My voices** library for style training. Its articles are not mixed into the evidence cards or copied into each project that uses the voice. Older project-role Voice sources remain readable and can seed a reusable profile without deletion. **Save as reusable voice** copies their training material into the library, while applying the saved graph copies only its compact snapshot. [Voice library](VOICE-GRAPHS.md).
+
## Add material through the interface
**Upload:** PDF, DOCX, TXT, Markdown, CSV or HTML. The per-file upload limit is 20 MB; extracted source text is limited to two million characters. CSV is imported as text, not silently converted into a statistical analysis.
@@ -52,7 +56,7 @@ The normal Windows data directory is `%LOCALAPPDATA%\GraphPaper`. The applicatio
| Item | Purpose |
|---|---|
-| `studio.sqlite3` | Projects, source text, current drafts, revisions, settings and cache |
+| `studio.sqlite3` | Projects, source text, drafts, revisions, graph-edit undo history, saved voices and training pieces, settings and cache |
| Project workspaces | Inbox imports, preserved uploads and author-managed exports |
| `credentials.dpapi` | API credentials encrypted for the Windows user context |
| `codex-account/` | Separate Codex-managed account state |
@@ -64,6 +68,8 @@ Do not upload the full data directory to a public issue. It can contain unpublis
**Export → Project backup** creates a portable JSON copy of the current project. It includes source text and the current graph, outline, manuscript and associated project fields, but not provider keys or the complete historical revision database. Importing a backup creates a separate project copy rather than overwriting the existing one.
-For a **full-history backup**, close GraphPaper and copy the complete data directory. Protect that copy as confidential. Windows-encrypted credentials may not decrypt under another user or computer; plan to sign in or re-enter keys there.
+A project backup contains its applied compact voice snapshot, not the global voice library or its training pieces. **Export voice** exports a reusable compact graph separately. Camera and manually arranged graph positions are local view settings and are not currently included in the project JSON.
+
+For a **full-history backup**, including the full voice library, close GraphPaper and copy the complete data directory. Protect that copy as confidential. Windows-encrypted credentials may not decrypt under another user or computer; plan to sign in or re-enter keys there.
Versions provide earlier drafts and generated checkpoints. Restoring a version preserves the draft it replaces. After restoration, rerun reviews that no longer describe the current text, and recheck fiction ledgers or scientific confirmations where relevant.
diff --git a/docs/QUALITY.md b/docs/QUALITY.md
index 614a443..03af4d7 100644
--- a/docs/QUALITY.md
+++ b/docs/QUALITY.md
@@ -1,5 +1,22 @@
# Validation and quality
+## Version 0.6.0 validation
+
+The published v0.6.0 build corresponds to source `00cab75a2cfc13f541573be3bce14f0cc5b97684`. Its [GitHub-hosted release validation](https://github.com/AronAxe/GraphPaper/actions/runs/37807775156) completed successfully before publication.
+
+| Check | Recorded result |
+|---|---|
+| Windows Python regression suite | 299 passed |
+| Graph geometry tests | 6 passed |
+| Real-HTTP browser workflows | All 7 suites passed |
+| Compiled Windows native checks | 28 passed, including graph editing/undo, voice reuse, dialogs and save-on-close |
+
+Provider and JEV responses were controlled synthetic fixtures; the results test routing, UI and storage rather than live editorial quality. No private project, model account or user computer was used. The [release](https://github.com/AronAxe/GraphPaper/releases/tag/v0.6.0) records the archive checksum. The [visual tour](VISUAL-TOUR.md) uses actual captures from this exact release run, with a [per-image provenance manifest](images/screenshots-v0.6.json).
+
+## Historical validation
+
+The following versioned reports describe earlier releases, not the current screenshot set or current documentation version.
+
## Version 0.4.0 validation
**252 automated Windows tests passed**; 1 permission-related test skipped. All **54 real-HTTP browser checks** passed, with no JavaScript page errors. The actual compiled Windows application passed **17 native checks**, including mode conversion, thesis/force controls, external Graphify, native Save As and pending-edit save before normal exit.
diff --git a/docs/README.md b/docs/README.md
index ef46125..f08d863 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,56 +1,57 @@
# GraphPaper documentation
-**A studio for connected thought.** GraphPaper brings source material, graph exploration and a writing desk into one local-first Windows application.
+**Connect your sources. Find your angle. Write in your own voice.**
-These guides describe **GraphPaper 0.5.0**. The [release page](https://github.com/AronAxe/GraphPaper/releases/latest) provides the current Windows download; [CHANGELOG](../CHANGELOG.md) records version history. The same guides are published in the [GitHub wiki](https://github.com/AronAxe/GraphPaper/wiki).
+These guides cover **GraphPaper 0.6.0**: the ink-blue studio, real graph-paper sidebar, spatial graph editor, four writing modes and reusable voice graphs. [Download for Windows](https://github.com/AronAxe/GraphPaper/releases/latest) · [See the interface](VISUAL-TOUR.md) · [Version history](../CHANGELOG.md).
## Start here
| You want to… | Read |
|---|---|
-| Install and finish a first project | [Getting started](GETTING-STARTED.md) |
-| Upgrade Windows or use the source edition | [Windows installation](WINDOWS.md) |
-| Use ChatGPT sign-in, API models or deeper reasoning | [Models and reasoning](CONNECTIONS.md) |
-| Write an essay or researched article | [Nonfiction workflow](NONFICTION.md) |
-| Make a forceful argument without forced neutrality | [Polemic and authorial intent](POLEMIC.md) |
-| Develop a story and preserve its canon | [Fiction workflow](FICTION.md) |
-| Search scholarly literature and write a manuscript | [Science workflow](SCIENCE.md) |
+| See the real application before installing | [Visual tour](VISUAL-TOUR.md) |
+| Finish a first project | [Getting started](GETTING-STARTED.md) |
+| Install or upgrade without losing work | [Windows installation](WINDOWS.md) |
+| Choose models, Codex sign-in and reasoning depth | [Models and reasoning](CONNECTIONS.md) |
+| Get a quick answer about graphs, voices or costs | [Frequently asked questions](FAQ.md) |
-## Work with your material
-
-| Guide | Covers |
-|---|---|
-| [Projects and sources](PROJECTS-AND-SOURCES.md) | Source roles, project Inbox, file formats, updates and backups |
-| [Graph exploration and JEV](GRAPH-AND-JEV.md) | Relationship status, paths, pins, candidate evaluation and Graphify |
-| [Author voice and prose tools](VOICE-AND-PROSE.md) | Style samples, author URLs, Humanize, Deslop and reversible edits |
-| [Exports and APA](EXPORTS-AND-APA.md) | Word/Markdown/HTML, bibliography formats and research packages |
+## Choose your writing workflow
-## Understand and maintain the app
+| Mode | Purpose | Guide |
+|---|---|---|
+| Nonfiction | Develop a source-linked article or essay; argue a case or investigate a question | [Nonfiction workflow](NONFICTION.md) |
+| Polemic | Defend your thesis with conviction, wit and your chosen rhetorical force | [Polemic and authorial intent](POLEMIC.md) |
+| Fiction | Build characters, scenes and consequences while preserving canon | [Fiction workflow](FICTION.md) |
+| Science | Search scholarly databases, screen evidence and prepare an APA manuscript | [Science workflow](SCIENCE.md) |
-[Privacy and security](SECURITY.md) · [Troubleshooting](TROUBLESHOOTING.md) · [Architecture](ARCHITECTURE.md) · [Integration reference](INTEGRATIONS.md) · [Development](DEVELOPMENT.md) · [Validation](QUALITY.md) · [Releases and packaging](PUBLISHING.md)
+**Sources → Graph → Angles → Outline → Write.** Science adds a Research desk. In an existing project, **current mode · Change** switches writing mode without deleting the sources, graph, voice or manuscript. Review the brief and refresh affected generated work afterward.
-## A few distinctions worth keeping
-
-**Local storage is not offline inference.** Sources and drafts remain in the local project database; choosing a cloud provider sends the material needed for the requested action to that provider.
+## Work with your material
-**A source match is not a truth certificate.** Exact quotations help locate evidence. They do not establish whether a paper is valid or whether a conclusion follows.
+| Guide | Covers |
+|---|---|
+| [Projects and sources](PROJECTS-AND-SOURCES.md) | Uploads, source roles, project Inbox, local storage and backups |
+| [Spatial graph studio](GRAPH-STUDIO.md) | 3D/2D, orbit/pan/zoom, density, connection styles, node/edge editing and undo |
+| [Graph exploration and JEV](GRAPH-AND-JEV.md) | Extraction, Graphify, evidence status, paths, pins and bounded typed decisions |
+| [Reusable voice graphs](VOICE-GRAPHS.md) | Save a voice once, train separately, edit its graph, reuse it and inspect overlays |
+| [Author voice and prose tools](VOICE-AND-PROSE.md) | Style direction, Humanize, Deslop, comparison and explicit acceptance |
+| [Exports and APA](EXPORTS-AND-APA.md) | Word, Markdown, HTML, project backups and scientific export packages |
-**A proposal is not publication.** You choose the angle, review the draft and accept prose edits. Scientific submission checks require author verification; they do not represent a review board.
+## Try it without model calls
-## Suggested first sessions
+Open **The city after dark**, the included illustrative example. Explore the Graph tab: drag the background to orbit, Shift-drag to pan, and scroll to zoom. Click a node or connection to inspect and edit it. Try **Focus here**, then **Reset filters**. Manual graph editing does not call a model.
-**For a writer:** open the illustrative nonfiction example, select a graph node, inspect its source, edit the chosen angle, then explore the outline and writing desk. This requires no model request until you explicitly generate something.
+Next, open Angles, edit a thesis and explore Outline and Write. These are your editorial decisions. Model calls start only when you explicitly run a generation or analysis action.
-**For a researcher:** create a Science project with one focused question and one or two databases. Search, inspect the log and screen a small set before spending model calls on appraisal or drafting. Expand only after checking what the first pass retrieved.
+For an existing learned voice, use **Your writing voice → Save as reusable voice**. In another project, choose it in **My voices → Use in this project**. Saving the existing profile and applying it require no retraining or model request.
-## Documentation maintenance
+## Upgrade notes for existing projects
-These Markdown files are the maintained source. [The documentation tooling](DEVELOPMENT.md#maintaining-the-documentation) validates links and renders the wiki with consistent navigation; screenshots are shared rather than copied into every page. Historical release notes stay available, but they are not the current setup guide.
+The visual redesign does **not** require rebuilding graphs or re-uploading sources. Saved voices are independent of the article evidence. Your current instructions override saved style defaults; rhetorical force is separate from evidence detail.
-## Reusable voices and bounded JEV decisions
+Source changes may require a graph rebuild. Brief, mode or voice changes instead call for refreshing affected angles or outlines using the existing graph. [Recovery and common problems](TROUBLESHOOTING.md).
-[Save a voice graph once and reuse it across projects](VOICE-GRAPHS.md). Training pieces are separate from article evidence; current author instructions override saved preferences.
+## Reference and maintenance
-## Spatial graph studio
+[Privacy and security](SECURITY.md) · [Troubleshooting](TROUBLESHOOTING.md) · [Architecture](ARCHITECTURE.md) · [Integration reference](INTEGRATIONS.md) · [Development](DEVELOPMENT.md) · [Validation](QUALITY.md) · [Releases and packaging](PUBLISHING.md).
-[3D/2D navigation, decluttering, node/connection editing and undo](GRAPH-STUDIO.md) · [0.6.0 release](RELEASE-0.6.0.md)
+The repository's `docs/` files are the maintained source for this wiki. Navigation, internal links and images are rendered from the same content. The publishing process checks for independent wiki edits rather than silently replacing them. Historical release notes remain available and are labelled by version.
diff --git a/docs/SCIENCE.md b/docs/SCIENCE.md
index 4eed011..56066b9 100644
--- a/docs/SCIENCE.md
+++ b/docs/SCIENCE.md
@@ -1,5 +1,8 @@
# Science: from literature search to manuscript
+
+*Actual v0.6 research desk; these records are synthetic test fixtures. [Capture details](VISUAL-TOUR.md).*
+
Science is a separate project mode for scholarly discovery, documented screening, evidence appraisal and academic writing. The default output is an **evidence-led narrative review**: real secondary research, not a fabricated new experiment.

diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md
index 52234ac..5f3a2c4 100644
--- a/docs/TROUBLESHOOTING.md
+++ b/docs/TROUBLESHOOTING.md
@@ -27,6 +27,26 @@ For Codex sign-in problems, use its GraphPaper-specific sign-in controls and che
A network timeout can represent a request the provider already processed. The app avoids assuming that an unobserved request was free. Repeated retries can incur additional charges.
+## Graph studio and reusable voices
+
+**Graph is too dense:** select a relevant node, use **Focus here** or one/two hops, reduce **Show**, or filter connection types. **Spread nodes apart** and zoom help; **2D** provides a flat view. Hidden nodes remain stored and searchable.
+
+**Graph seems to disappear:** clear the search and use **Reset filters**, then **Fit graph** or **Reset camera**. A view setting is not data deletion.
+
+**Edit did not save:** node/connection inspector changes require **Save node**, **Save connection** or Ctrl+S. Editing is blocked during active AI jobs. A stale-version conflict protects newer data; refresh before retrying instead of overwriting it.
+
+**Undo is unavailable after extraction:** graph-only undo refuses to replace a graph that was rebuilt or imported after the edit. It is separate from manuscript Versions.
+
+**Saved voice missing from another article:** open **My voices**, select it and choose **Use in this project**. A project-only profile first needs **Save as reusable voice**. No retraining is needed for an already learned profile.
+
+**Library changes did not alter an existing project:** each project keeps an applied snapshot. Reapply the saved voice deliberately, then refresh affected angles/outline as needed.
+
+## External Graphify and JEV requests
+
+**Adapter expects Graphify 0.9.80:** clear **Custom Graphify executable**, save connections and run **Check Graphify runtime** to use the included runtime. Keep Graphify selected as the engine. An explicit custom path overrides the bundled copy.
+
+**JEV exceeds the old 60,000-character limit:** use v0.6 with the request-sizing fix introduced in v0.5. The app preflights UTF-8 size, batches automatically and excludes raw voice-training articles. An oversized optional decision should now be labelled unscored, not fail the whole job. If the old exact error persists, confirm the executable version rather than weakening the brief or retraining the voice. Report provider/API failures separately.
+
## Sources and folders
**The project Inbox did not import a file:** open that project, keep it visible and idle, and wait for the file to stop changing. Then try **Import files now**. Check format and size limits. The folder is not watched by a service while the app is closed.
@@ -65,4 +85,4 @@ Review diagnostics before sharing them. Never attach `credentials.dpapi`, Codex
## Angles are too cautious or ignore my voice
-Use the 0.4 release. It removes forced counterbalancing and supplies voice context to the early editorial stages. In an existing project, choose **current mode · Change -> Polemic**, then edit **Core thesis** and **Rhetorical force**. In Angles, choose **Refresh angles with my voice**; old saved angles do not rewrite themselves when a slider changes. The existing graph is reused. Evidence detail is a separate control and never sets how moderate your position must be. Ordinary Nonfiction can also **Develop and defend my position**.
+Use v0.6.0 or newer. The authorial-intent changes introduced in v0.4 remove forced counterbalancing and supplies voice context to the early editorial stages. In an existing project, choose **current mode · Change -> Polemic**, then edit **Core thesis** and **Rhetorical force**. In Angles, choose **Refresh angles with my voice**; old saved angles do not rewrite themselves when a slider changes. The existing graph is reused. Evidence detail is a separate control and never sets how moderate your position must be. Ordinary Nonfiction can also **Develop and defend my position**.
diff --git a/docs/VISUAL-TOUR.md b/docs/VISUAL-TOUR.md
new file mode 100644
index 0000000..4dfe9b5
--- /dev/null
+++ b/docs/VISUAL-TOUR.md
@@ -0,0 +1,77 @@
+# Visual tour: GraphPaper 0.6.0
+
+These are **screenshots of the actual running v0.6 interface**, not generated mockups. They were captured over loopback HTTP in Chromium during the successful [v0.6 release validation](https://github.com/AronAxe/GraphPaper/actions/runs/37807775156). The application UI is shared with the Windows desktop, but these images are browser captures, not screenshots of Windows window chrome.
+
+The nonfiction project is an included illustrative example. Research records, provider responses and voice examples are synthetic test material, not published studies, private writing or measurements of model quality. Images were converted to WebP without retouching, compositing or changing interface content. [Capture provenance and checksums](images/screenshots-v0.6.json).
+
+## Spatial graph studio
+
+
+
+Orbit or flatten the view, focus neighborhoods, filter relationships, and edit nodes or connections in the inspector. [Graph studio guide](GRAPH-STUDIO.md).
+
+## Dense graph overview
+
+
+
+A synthetic 600-node graph exercises the default 60-node display budget. Full-graph search still reaches hidden nodes; view limits do not remove project data.
+
+## Angles and the writing desk
+
+
+
+Choose, edit or replace an angle. [Nonfiction](NONFICTION.md) · [Polemic](POLEMIC.md).
+
+
+
+The illustrative manuscript, preview, editorial actions and saved versions belong to the same project. [Voice and prose tools](VOICE-AND-PROSE.md).
+
+## Reusable voice graphs
+
+
+
+Name a voice once and reuse its compact graph without copying training pieces into each article. This capture uses an explicitly entered synthetic style example. [Voice library guide](VOICE-GRAPHS.md).
+
+## Science research desk
+
+
+
+Search protocols, screening, references and retrieval status are visible together. The records in this image are labelled synthetic test fixtures. [Science workflow](SCIENCE.md).
+
+
+
+Inspect evidence scope rather than assuming every retrieved record has full text.
+
+
+
+Review author-year references and export readiness. [Exports and APA](EXPORTS-AND-APA.md).
+
+## Connections, folders and prose proposals
+
+
+Model reasoning and the bundled Graphify runtime
+
+
+
+
+
+The captures use test model metadata. Available model IDs and reasoning levels depend on the selected provider. [Model setup](CONNECTIONS.md).
+
+
+
+
+Project folder and reversible prose edits
+
+
+
+
+
+[Project folders](PROJECTS-AND-SOURCES.md) · [Humanize and Deslop](VOICE-AND-PROSE.md).
+
+
+
+## Light theme
+
+
+
+The theme switch changes the workspace while retaining the paper sidebar. [Get started](GETTING-STARTED.md).
diff --git a/docs/VOICE-AND-PROSE.md b/docs/VOICE-AND-PROSE.md
index ed233c5..d2d49d4 100644
--- a/docs/VOICE-AND-PROSE.md
+++ b/docs/VOICE-AND-PROSE.md
@@ -1,7 +1,16 @@
# Author voice, Humanize and Deslop
+
+*Actual v0.6 original/proposed edit comparison with synthetic test prose. [Capture details](VISUAL-TOUR.md).*
+
GraphPaper can use your own writing as a style reference and offer reversible prose-editing passes. These features guide generation; they do not fine-tune model weights or promise perfect imitation.
+## Save a voice once and reuse it
+
+The **My voices** library stores named, editable voice graphs independently of article evidence. For an already learned profile, use **Your writing voice → Save as reusable voice**. In another project, select it and choose **Use in this project**. Saving an existing profile and applying it require no model call or copied training articles. Each project keeps an applied snapshot; later library changes take effect only when explicitly reapplied. [Complete library and overlay guide](VOICE-GRAPHS.md).
+
+For a new reusable voice, choose **New voice**, add files, pasted text or article URLs under **Training pieces**, then **Learn / rebuild graph**. The source pieces are stored in the separate voice library.
+
## Add your writing
Open **Sources → Your writing voice**. Upload a document, paste a sample, or use **Find my writing online** with an article, author or blog URL.
@@ -16,7 +25,7 @@ Voice sources guide cadence, diction and structure. They do not become factual e
Useful instructions are specific: “Keep the short opening sentences and occasional dry aside; preserve technical qualifications.” Less useful instructions demand a vague personality while contradicting the examples.
-If samples change, a learned profile can become stale. Refresh it; the old derived profile is not treated as a fresh analysis of the new material. Explicitly edited instructions are author direction. Profiles are part of the project state, not a trained global personalization model.
+If samples change, a learned profile can become stale. Refresh it; the old derived profile is not treated as a fresh analysis of the new material. Explicitly edited instructions are author direction. Projects retain their applied profile snapshot. A saved reusable graph also lives in the separate local voice library; neither is a fine-tuned model or a remote personalization service.
## Choose the right prose action
@@ -41,6 +50,8 @@ If you edit the manuscript after a proposal was created, that proposal is stale
For nonfiction, look for unnecessary framing that delays the argument. For fiction, check whether an edit flattens subtext or removes a character’s distinctive speech. For Science, preserve methodological qualifications, reported uncertainty and terminology even when they sound less conversational.
+A saved voice is not a politeness filter. Strong language, sarcasm, indignation and a decisive conclusion are valid author choices; explicit current instructions override saved defaults.
+
A lower cue count is not a quality score. The goal is a better passage with the same intended meaning—not the absence of every pattern on a list.
## Design references
@@ -49,4 +60,4 @@ The independent implementation was informed by the writing-focused approaches in
## Voice before the prose
-Since 0.4, voice samples and the authorial contract are supplied to angle generation, JEV evaluation, outlining and the initial reviewer as well as drafting and prose edits. Rhetorical stance, humor and willingness to conclude are part of authorial style, not merely punctuation. Moral judgments are distinct from factual claims. See [Polemic and argumentative writing](POLEMIC.md).
+Voice context and the authorial contract guide angle generation, outlining, the initial reviewer, drafting and prose edits. JEV receives the compact graph/profile view, not the raw voice-training articles. Rhetorical stance, humor and willingness to conclude are part of authorial style, not merely punctuation. Moral judgments are distinct from factual claims. See [Polemic and argumentative writing](POLEMIC.md).
diff --git a/docs/VOICE-GRAPHS.md b/docs/VOICE-GRAPHS.md
index cd8a9a3..d730c2a 100644
--- a/docs/VOICE-GRAPHS.md
+++ b/docs/VOICE-GRAPHS.md
@@ -1,5 +1,8 @@
# Reusable voice graphs and compact JEV decisions
+
+*Actual v0.6 voice library with a synthetic style example. [Capture details](VISUAL-TOUR.md).*
+
Create a voice once, name it, and apply it in any project. You do not need to upload or analyze the same writing repeatedly.
## Save the voice you already made
diff --git a/docs/WINDOWS.md b/docs/WINDOWS.md
index d3375a6..660dc1b 100644
--- a/docs/WINDOWS.md
+++ b/docs/WINDOWS.md
@@ -21,7 +21,11 @@ A SmartScreen warning about an unsigned binary is not a validation result. Check
The executable folder is separate from the normal data directory, `%LOCALAPPDATA%\GraphPaper`. Existing projects, revisions, settings and credentials are not overwritten by extracting a new application. Back up important work before upgrading.
-The native bridge and save-on-close corrections introduced in 0.2.1 remain in 0.3.0. Use the latest release rather than the affected 0.2.0 executable.
+The native bridge and save-on-close corrections introduced in 0.2.1 remain in 0.6.0. Use the latest release rather than the affected 0.2.0 executable.
+
+## Existing graphs and voices in v0.6
+
+Open the same project data directory; the redesign does not require re-extraction or re-uploading sources. The new Graph tab supplies 3D/2D navigation and manual editing. Save an existing learned voice as a reusable graph without another model call. Project files and the global voice library remain separate from the extracted application folder. [Graph studio](GRAPH-STUDIO.md) · [Reusable voices](VOICE-GRAPHS.md).
## Source edition
@@ -47,6 +51,6 @@ The normal log directory is `%LOCALAPPDATA%\GraphPaper`. Logs may contain diagno
For model, import and manuscript problems, continue with [Troubleshooting](TROUBLESHOOTING.md). For developer builds and native checks, see [Releases and packaging](PUBLISHING.md).
-## External Graphify in 0.3.1
+## External Graphify
-The 0.3.1 Windows package includes the public Graphify runtime and its dependencies. No separate Graphify installation is required. Clear an old custom executable path to select the included runtime; custom paths are never silently overridden. [Detailed setup and distribution](UPDATE-0.3.1.md).
+The current Windows package includes the public Graphify runtime and its dependencies. No separate Graphify installation is required. Clear an old custom executable path to select the included runtime; custom paths are never silently overridden. [Detailed setup and distribution](UPDATE-0.3.1.md).
diff --git a/docs/images/angles-v0.6.webp b/docs/images/angles-v0.6.webp
new file mode 100644
index 0000000..961dd72
Binary files /dev/null and b/docs/images/angles-v0.6.webp differ
diff --git a/docs/images/apa-preview-v0.6.webp b/docs/images/apa-preview-v0.6.webp
new file mode 100644
index 0000000..3a7527a
Binary files /dev/null and b/docs/images/apa-preview-v0.6.webp differ
diff --git a/docs/images/codex-v0.6.webp b/docs/images/codex-v0.6.webp
new file mode 100644
index 0000000..44821fc
Binary files /dev/null and b/docs/images/codex-v0.6.webp differ
diff --git a/docs/images/dense-graph-v0.6.webp b/docs/images/dense-graph-v0.6.webp
new file mode 100644
index 0000000..6aadff3
Binary files /dev/null and b/docs/images/dense-graph-v0.6.webp differ
diff --git a/docs/images/evidence-v0.6.webp b/docs/images/evidence-v0.6.webp
new file mode 100644
index 0000000..3703794
Binary files /dev/null and b/docs/images/evidence-v0.6.webp differ
diff --git a/docs/images/folder-v0.6.webp b/docs/images/folder-v0.6.webp
new file mode 100644
index 0000000..563a5cd
Binary files /dev/null and b/docs/images/folder-v0.6.webp differ
diff --git a/docs/images/four-modes-v0.6.webp b/docs/images/four-modes-v0.6.webp
new file mode 100644
index 0000000..7ed391a
Binary files /dev/null and b/docs/images/four-modes-v0.6.webp differ
diff --git a/docs/images/graph-studio-v0.6.webp b/docs/images/graph-studio-v0.6.webp
new file mode 100644
index 0000000..00df578
Binary files /dev/null and b/docs/images/graph-studio-v0.6.webp differ
diff --git a/docs/images/graph-v0.6.webp b/docs/images/graph-v0.6.webp
new file mode 100644
index 0000000..0ae7e85
Binary files /dev/null and b/docs/images/graph-v0.6.webp differ
diff --git a/docs/images/graphify-graph-v0.6.webp b/docs/images/graphify-graph-v0.6.webp
new file mode 100644
index 0000000..c7b81f2
Binary files /dev/null and b/docs/images/graphify-graph-v0.6.webp differ
diff --git a/docs/images/graphify-settings-v0.6.webp b/docs/images/graphify-settings-v0.6.webp
new file mode 100644
index 0000000..8678dff
Binary files /dev/null and b/docs/images/graphify-settings-v0.6.webp differ
diff --git a/docs/images/humanizer-v0.6.webp b/docs/images/humanizer-v0.6.webp
new file mode 100644
index 0000000..32f59fe
Binary files /dev/null and b/docs/images/humanizer-v0.6.webp differ
diff --git a/docs/images/light-v0.6.webp b/docs/images/light-v0.6.webp
new file mode 100644
index 0000000..e780e4c
Binary files /dev/null and b/docs/images/light-v0.6.webp differ
diff --git a/docs/images/polemic-v0.6.webp b/docs/images/polemic-v0.6.webp
new file mode 100644
index 0000000..b8bd18c
Binary files /dev/null and b/docs/images/polemic-v0.6.webp differ
diff --git a/docs/images/reasoning-v0.6.webp b/docs/images/reasoning-v0.6.webp
new file mode 100644
index 0000000..721b778
Binary files /dev/null and b/docs/images/reasoning-v0.6.webp differ
diff --git a/docs/images/research-v0.6.webp b/docs/images/research-v0.6.webp
new file mode 100644
index 0000000..4f03a79
Binary files /dev/null and b/docs/images/research-v0.6.webp differ
diff --git a/docs/images/reusable-voice-v0.6.webp b/docs/images/reusable-voice-v0.6.webp
new file mode 100644
index 0000000..160d75e
Binary files /dev/null and b/docs/images/reusable-voice-v0.6.webp differ
diff --git a/docs/images/screenshots-v0.6.json b/docs/images/screenshots-v0.6.json
new file mode 100644
index 0000000..b988340
--- /dev/null
+++ b/docs/images/screenshots-v0.6.json
@@ -0,0 +1,151 @@
+{
+ "version": "0.6.0",
+ "source_revision": "00cab75a2cfc13f541573be3bce14f0cc5b97684",
+ "validation_run": "https://github.com/AronAxe/GraphPaper/actions/runs/37807775156",
+ "artifact_id": 11563921375,
+ "capture_kind": "Actual Chromium interface served by the application over loopback HTTP on a GitHub-hosted runner",
+ "material": "Included illustrative project and clearly synthetic test fixtures; no private manuscripts or accounts",
+ "processing": "WebP format conversion only; no retouching, image generation or compositing",
+ "images": {
+ "graph-studio-v0.6.webp": {
+ "capture": "graph-studio/graph-studio.png",
+ "width": 1580,
+ "height": 1318,
+ "original_sha256": "41c39d07b1e39b6c566eb9d098b4659084892c59dcfd35215a0c8d98f8147bc5",
+ "webp_sha256": "8808a0d352fb6d038f3b70682b01b3076b3188fead79ca30bef041e15060573c"
+ },
+ "dense-graph-v0.6.webp": {
+ "capture": "graph-studio/dense-overview.png",
+ "width": 1580,
+ "height": 1372,
+ "original_sha256": "bd33730a50d4a047cd8b55bda6e0aae77a18e2801c8b57219726015b8abff9f2",
+ "webp_sha256": "bf7f7a0a294b91c1ae18cdd08d93f61f46400ddd98d7c2f0c53dde7b1a483b69"
+ },
+ "graph-v0.6.webp": {
+ "capture": "ui/graph.png",
+ "width": 1440,
+ "height": 1318,
+ "original_sha256": "eaf2391230a3f70340be3344b6c119cecc8afa516378431af0e910c95ef823b4",
+ "webp_sha256": "85fa7dd72c6483b5c9a8bf97910356c052b09727bd26507714ab6c4dd149ec2e"
+ },
+ "writing-v0.6.webp": {
+ "capture": "ui/writing.png",
+ "width": 1440,
+ "height": 1532,
+ "original_sha256": "4ecabf229c9ea2236e56a9b6cd60f9da1dbe6384d9b9eb2689bb683daa19bc9c",
+ "webp_sha256": "1e0bfd2e13a1e08321b9c63bbd0cfbd008e7a5d300f41661e984ec43f45c1ea7"
+ },
+ "angles-v0.6.webp": {
+ "capture": "ui/angles.png",
+ "width": 1440,
+ "height": 1418,
+ "original_sha256": "716f38410f7c9da5ad6c104978e1eb79adfdab40f7997da211f1307d019620e7",
+ "webp_sha256": "e0ac8d73f231cc9baa3733eb9ac192b603357408cc6a5271ee8cd45b6f259755"
+ },
+ "light-v0.6.webp": {
+ "capture": "ui/light.png",
+ "width": 1440,
+ "height": 1318,
+ "original_sha256": "09d7690f81fe9fb8c9dcfb72fac5fedd6fafa3871943d47a1bd77a7bc558e7a4",
+ "webp_sha256": "ad7442c3d11b0f2ed0d21f221ed09fa052bc1128108055be43bc680e5ee32d56"
+ },
+ "welcome-v0.6.webp": {
+ "capture": "ui/welcome.png",
+ "width": 1440,
+ "height": 1069,
+ "original_sha256": "6a49ed449b620e8056946b10f10e19c6df1bdbaefad07abb6afb9c2af683e0f5",
+ "webp_sha256": "3ebc72ac8bbeddf59307aa7a630c3a7d967f57bdba82e2724d0ac471359c052e"
+ },
+ "research-v0.6.webp": {
+ "capture": "science-ui/research.png",
+ "width": 1440,
+ "height": 1083,
+ "original_sha256": "80757e22bb4112f7a50f18779589119fdc60d87001dbb7ec9f69d8d1436f90be",
+ "webp_sha256": "02440dffef22cb076c95d0a4eccc09f3da3af91ee6fffd45cae7a9ab19f96e25"
+ },
+ "apa-preview-v0.6.webp": {
+ "capture": "science-ui/apa-preview.png",
+ "width": 1440,
+ "height": 1659,
+ "original_sha256": "505076b1e36430c0d2522e91ecc48041d50dc391c65f0b3bccbc95ab882572a7",
+ "webp_sha256": "fea0dbb0a4eb0e1b62a2c9882c4c85716f83fec971b5302b39de6ecf0df71f96"
+ },
+ "evidence-v0.6.webp": {
+ "capture": "science-ui/evidence.png",
+ "width": 1440,
+ "height": 1040,
+ "original_sha256": "71bea34a7a68063d2d49c549f862b4726775f5748e1d616a26a41c029c3445c4",
+ "webp_sha256": "38576350bd49a8e024b276efe41961b6e30505d2a077e361b6992f9ae4577297"
+ },
+ "reasoning-v0.6.webp": {
+ "capture": "science-ui/reasoning.png",
+ "width": 1440,
+ "height": 1040,
+ "original_sha256": "522680e51795d2f188c12cddbdd1fc587eb642185190b76a2c329a7ed5c2c144",
+ "webp_sha256": "1ffcefd08ef2ab70c255c26c9eb74a1ddd9f4901e422b59f64088d1b9956d8b3"
+ },
+ "codex-v0.6.webp": {
+ "capture": "studio/codex.png",
+ "width": 1440,
+ "height": 1180,
+ "original_sha256": "3fd3df46791fb40a5d185b368d94c0a6dbec314e54ec9df59087f8dad7e96a8f",
+ "webp_sha256": "7c020ed24bc61518a9aa7012160f2ad31edb97a0eb29602e5088a0af0d6e9e6f"
+ },
+ "folder-v0.6.webp": {
+ "capture": "studio/folder.png",
+ "width": 1440,
+ "height": 1000,
+ "original_sha256": "c33b8e7428c44b88baf877958b99c8fc4038bfc999bff31ad278f265b34047af",
+ "webp_sha256": "e7bf273ba474f13573ba485f9c05c6e660d839058517d634f7f12cb6abfdbeea"
+ },
+ "humanizer-v0.6.webp": {
+ "capture": "studio/humanizer.png",
+ "width": 1440,
+ "height": 1232,
+ "original_sha256": "4e5a9dedd3b659ef1f3a3217e00441cbbb614df352353fda259f3fd555c69bb1",
+ "webp_sha256": "9dd81d8633ab5ef7f55b36e30998ec89b08f075e5564af7f189cd84cc124348f"
+ },
+ "voice-v0.6.webp": {
+ "capture": "studio/voice.png",
+ "width": 1440,
+ "height": 1000,
+ "original_sha256": "3542a17c5897ae2bab9310b046e5419e0ba8f5d5bad19325000cba7281ae74d8",
+ "webp_sha256": "683f718d57d6918c31bb1208123ee87b00308b0926f66a7a3755ce726c85c82e"
+ },
+ "reusable-voice-v0.6.webp": {
+ "capture": "voices-ui/reusable-voice.png",
+ "width": 1440,
+ "height": 1000,
+ "original_sha256": "30981cf081a043b28f049a6c0ab76f948bceab1a2340aa5e6980f445ca267d86",
+ "webp_sha256": "4b6b572c97206a3395f0e9f39df3d0260456d88ee6010c3822adfce45c771ce1"
+ },
+ "polemic-v0.6.webp": {
+ "capture": "polemic-ui/polemic-angles.png",
+ "width": 1440,
+ "height": 1296,
+ "original_sha256": "fe379d86a7df60560fab5b639fc52291d9c410f45b4c10052900c0540d343996",
+ "webp_sha256": "80f454df710158c2e812bc8e5d5f447f43e823f61307263394bf8716a03b3061"
+ },
+ "four-modes-v0.6.webp": {
+ "capture": "polemic-ui/four-modes.png",
+ "width": 1440,
+ "height": 1069,
+ "original_sha256": "f6f865fddb79dab31bf0ee5a8afc28f1f715b786a727b896d4a3f36ce8f005f5",
+ "webp_sha256": "7011323172353ec001acc652ad773eca3bea44fe4079bc9189e43958304542f3"
+ },
+ "graphify-graph-v0.6.webp": {
+ "capture": "graphify-ui/graphify-graph.png",
+ "width": 1440,
+ "height": 1040,
+ "original_sha256": "540d340b1621abe7c23e10b66866ae6da8f9490ef79b99de4a2fe8078ac1d357",
+ "webp_sha256": "eb7896085ced347f4d3b31c1df8ce21d8c0267f67fcb1ab9702f05b99c2dbc44"
+ },
+ "graphify-settings-v0.6.webp": {
+ "capture": "graphify-ui/graphify-settings.png",
+ "width": 1440,
+ "height": 1040,
+ "original_sha256": "e4097e27f4f1bd18da25131a812ea7a08f637eed6f752fa9cfef266bc01fdd5f",
+ "webp_sha256": "e9cd2cba342bf9603f5fe43a124f5cb584ef32b6a57b9f9f650b9fa25295bc09"
+ }
+ }
+}
diff --git a/docs/images/voice-v0.6.webp b/docs/images/voice-v0.6.webp
new file mode 100644
index 0000000..f9ea71d
Binary files /dev/null and b/docs/images/voice-v0.6.webp differ
diff --git a/docs/images/welcome-v0.6.webp b/docs/images/welcome-v0.6.webp
new file mode 100644
index 0000000..d053bfd
Binary files /dev/null and b/docs/images/welcome-v0.6.webp differ
diff --git a/docs/images/writing-v0.6.webp b/docs/images/writing-v0.6.webp
new file mode 100644
index 0000000..feadc3b
Binary files /dev/null and b/docs/images/writing-v0.6.webp differ
diff --git a/docs/tests/test_current_release.py b/docs/tests/test_current_release.py
new file mode 100644
index 0000000..91ec847
--- /dev/null
+++ b/docs/tests/test_current_release.py
@@ -0,0 +1,48 @@
+"""Published guides and screenshots must cover the version they describe."""
+import hashlib
+import json
+from pathlib import Path
+import re
+import unittest
+
+from graphpaper import __version__
+from scripts.docs_tool import configuration, render
+
+ROOT = Path(__file__).resolve().parents[2]
+
+
+class CurrentDocumentationTests(unittest.TestCase):
+ def test_wiki_version_matches_application(self):
+ self.assertEqual(configuration(ROOT)['docs_version'], __version__)
+
+ def test_spatial_graph_and_reusable_voice_guides_are_published(self):
+ sources = {p['source'] for p in configuration(ROOT)['pages']}
+ self.assertTrue({'docs/GRAPH-STUDIO.md', 'docs/VOICE-GRAPHS.md'} <= sources)
+
+ def test_sidebar_sections_are_contiguous(self):
+ sections = [p['section'] for p in configuration(ROOT)['pages']]
+ runs = [s for i,s in enumerate(sections) if i == 0 or s != sections[i-1]]
+ self.assertEqual(len(runs),len(set(runs)), 'Group the sidebar instead of repeating sections')
+
+ def test_readme_screenshots_have_current_capture_provenance(self):
+ minor = '.'.join(__version__.split('.')[:2])
+ manifest = json.loads((ROOT / f'docs/images/screenshots-v{minor}.json').read_text())
+ self.assertEqual(manifest['version'], __version__)
+ readme = (ROOT/'README.md').read_text(encoding='utf-8')
+ images = re.findall(r'!\[[^\]]*\]\(docs/images/([^)]*\.webp)\)',readme)
+ self.assertGreaterEqual(len(images),3)
+ for name in images:
+ with self.subTest(image=name):
+ self.assertIn(name,manifest['images'])
+ path = ROOT/'docs/images'/name
+ self.assertEqual(hashlib.sha256(path.read_bytes()).hexdigest(),manifest['images'][name]['webp_sha256'])
+
+ def test_home_reaches_graph_and_voice_as_wiki_pages(self):
+ _,pages = render(ROOT)
+ home = pages['Home.md']
+ self.assertIn('/wiki/Spatial-Graph-Studio',home)
+ self.assertIn('/wiki/Reusable-Voice-Graphs',home)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/docs/wiki-pages.json b/docs/wiki-pages.json
index 3df7cbe..31f6f9b 100644
--- a/docs/wiki-pages.json
+++ b/docs/wiki-pages.json
@@ -1,12 +1,17 @@
{
"repository": "AronAxe/GraphPaper",
- "docs_version": "0.5.0",
+ "docs_version": "0.6.0",
"pages": [
{
"title": "Home",
"source": "docs/README.md",
"section": "Start here"
},
+ {
+ "title": "Visual-Tour",
+ "source": "docs/VISUAL-TOUR.md",
+ "section": "Start here"
+ },
{
"title": "Getting-Started",
"source": "docs/GETTING-STARTED.md",
@@ -22,6 +27,11 @@
"source": "docs/CONNECTIONS.md",
"section": "Start here"
},
+ {
+ "title": "Frequently-Asked-Questions",
+ "source": "docs/FAQ.md",
+ "section": "Start here"
+ },
{
"title": "Nonfiction-Workflow",
"source": "docs/NONFICTION.md",
@@ -47,11 +57,21 @@
"source": "docs/PROJECTS-AND-SOURCES.md",
"section": "Studio guides"
},
+ {
+ "title": "Spatial-Graph-Studio",
+ "source": "docs/GRAPH-STUDIO.md",
+ "section": "Studio guides"
+ },
{
"title": "Graph-Exploration-and-JEV",
"source": "docs/GRAPH-AND-JEV.md",
"section": "Studio guides"
},
+ {
+ "title": "Reusable-Voice-Graphs",
+ "source": "docs/VOICE-GRAPHS.md",
+ "section": "Studio guides"
+ },
{
"title": "Author-Voice-and-Prose-Tools",
"source": "docs/VOICE-AND-PROSE.md",
@@ -96,11 +116,6 @@
"title": "Releases-and-Packaging",
"source": "docs/PUBLISHING.md",
"section": "Reference"
- },
- {
- "title": "Reusable-Voice-Graphs",
- "source": "docs/VOICE-GRAPHS.md",
- "section": "Studio guides"
}
]
}
diff --git a/publish-manifest.json b/publish-manifest.json
index 76c402c..6414b4d 100644
--- a/publish-manifest.json
+++ b/publish-manifest.json
@@ -3,7 +3,7 @@
"files": {
".gitattributes": "acdb1038616f95b335ceb851c161a6139bf23561b2a74894a9ccb33ded5e71f4",
".github/topics.json": "341aa983b1829624dec7ab7cd2e83eed08d45bc78305033c1e860631c1227e41",
- ".github/workflows/docs.yml": "19c4d6229a804adf09358171b19a139b45f1c2630b751213af1e9e62baed2c40",
+ ".github/workflows/docs.yml": "839af4553785c5a2b04a2647791f4056ce7bdb97d20cb5e56bddd65e0d429c68",
".github/workflows/graph-studio-release.yml": "743b70fb67cc451c7c3ad9b28c422383d0d4e8eca9c26c58c5b029f707408eef",
".github/workflows/import-build.yml": "c56a990b97242f154907f76059f5b859448ca8de7b582928d63bb3717ac0d60a",
".github/workflows/native-diagnostics.yml": "818584858c3f0dce8ce17ff0ccff9b5984fab6c6d2a1481baa280f841c8cbf53",
@@ -19,23 +19,24 @@
"Open GraphPaper.vbs": "6ddf70eba29c281f9373c11b6aa7f69862c8ea7b03050b974c98d817ca11974e",
"Publish GraphPaper.pyw": "a55984668dd0040d9bb5fc8c4c18ea5a201eede7e8a51ab79f8f0f095162ec8b",
"Publish GraphPaper.vbs": "f9c595bcd13da5df60dcc2cfd906665243628f6e6c10a8b6a03ad1392a9698ad",
- "README.md": "c9083ffc46bd7ccff1a86f8a3bd85ebe3ae32dfc732500dc51518189ca86a11b",
+ "README.md": "7f46803f156a457e724344b6f528a4593303a75fe0d051192c320fadc303b0ef",
"SECURITY.md": "e70e5b87ea06cdc075c3111a1eb0bb6ac5f5b6f8b55f5e735ad69d84ae63cda6",
"docs/ARCHITECTURE.md": "86a28806513cf8b533d6a4767322c7dd339a6a2ed112081ea7ce5fcdf4ffd89d",
- "docs/CONNECTIONS.md": "eec1286ddc356bbb2cd7d63692e73abae6d0f7e9159bbb2edee6377dd5b3fd72",
+ "docs/CONNECTIONS.md": "28795d30a3ae8f64b5aac1c7eaf6adeb945c933cccb22bfb01e58f91f490909e",
"docs/DEVELOPMENT.md": "2c21f35be868e9da63d90cbc78b00488837916dbe36fdd631127c4035583ed21",
"docs/EXPORTS-AND-APA.md": "73e60e653118d2ee55f2f3e04b5d2aeac427c40dd33c76e1d050337261862d52",
+ "docs/FAQ.md": "bbb5eb7a4dabe05041c25859e32b198b598342185e5fc83dea1fc46effa29b42",
"docs/FICTION.md": "6ac2f136e848db8b9fd2bd329d4228894ad765e95d6a9cec317bb9372a847df8",
- "docs/GETTING-STARTED.md": "d663e4b1ea461de7e87ba8bb2fa15949db7ba8d89de69cbf1c0d1a265d3e2abd",
- "docs/GRAPH-AND-JEV.md": "6fc0ea4437d5691d50c02899f9a5377f2e42b97b9190cebc1c12d34819259c6e",
- "docs/GRAPH-STUDIO.md": "cf5a765cbd08f0caf23da868da5b05ba3ab1a15c9d84fc7d61950c8baf0ca697",
- "docs/INTEGRATIONS.md": "3fe70965f7597f7746335278ae954fed891264e6d767fd5a046cf85eb1baf3d2",
+ "docs/GETTING-STARTED.md": "162213356c42236daf33f82ae68f0b300dae6c75f1e9b811c2ebbce9db5eb654",
+ "docs/GRAPH-AND-JEV.md": "4fff4cc6bc6ac327eec54da1b18369d2e95429743e04551b505a34d7b5b0e075",
+ "docs/GRAPH-STUDIO.md": "ccd1a5c6b1b25558e326d0778c50fa0aadb7ce47f911911579f5331b89a406ed",
+ "docs/INTEGRATIONS.md": "e72432430c0f833f87858cc230730f791320e67624068c096d24627c5960a721",
"docs/NONFICTION.md": "09ad36f0c4d1e51053feeb4e53a939b772cde1d1c75321c43cf9434822d70367",
"docs/POLEMIC.md": "5992aece0504869add46268a741642675c77912ffedec7c59a1ef08220291161",
- "docs/PROJECTS-AND-SOURCES.md": "828179218c31bb9f50698e2d047a04b4a056b979800795a37cd790d29060e2dd",
+ "docs/PROJECTS-AND-SOURCES.md": "0cc5d1224ef5ddeaaf020865648c7daed0bb7f7323906d094ade2968d010d453",
"docs/PUBLISHING.md": "324b83d5138b22bb29ca1737cbc0563595cc14f03177d478c478bde9109f975f",
- "docs/QUALITY.md": "75b998fe5bd366c955516e1671c19a43ad6f6d5449e7356218980f0073bd3250",
- "docs/README.md": "c3bf1d01e5f45bc72c653216a94d8686938f5c8ad3f35498dfdf409e150b437e",
+ "docs/QUALITY.md": "924816ff2c38e1401f1e330925311343e42fdba5c91acd65421b8c51a79ed45e",
+ "docs/README.md": "e2b2c9394149031cdeec8cd53eb90d0d3cb1838efc523cb6b210f2ef93ed2041",
"docs/RELEASE-0.2.1.md": "42642432ff5c6017630d33a64726c5dca37abbbb36a476a901a59ec8887aa870",
"docs/RELEASE-0.2.md": "c03a41903088590845d0da0707a562b9e6cbf4c5e1ff57d8794763f349093e44",
"docs/RELEASE-0.3.0.md": "e32f30a3a9716c310be21dcf540cf9060384b0c7fdf69c8fc1c45d36c105cf29",
@@ -43,33 +44,56 @@
"docs/RELEASE-0.4.0.md": "ed7d83f07cf10c447efa2e1ba9fa2634af691cad792928548871eccbee96c751",
"docs/RELEASE-0.5.0.md": "960b36e74d2044bdc05c8b26d54113ea6580c259103d6ef6017809822032b0bf",
"docs/RELEASE-0.6.0.md": "02e6d3ef374c2b1309e416b2c11e93260bd83f00fa8c577471a7a9c7aab95900",
- "docs/SCIENCE.md": "9357a2f4ac714b6330aff4ccfe45ca0457d18e7816a73646314024823fd0ea00",
+ "docs/SCIENCE.md": "1190f85ee558febe0d19da47f8dde73d02916a54890f035fda4b9aa03108ed90",
"docs/SECURITY.md": "0f818eb0cf4e8f94ffaaeb6da3cc2c2bc474674b673d185c61b86b2eb5fd3864",
- "docs/TROUBLESHOOTING.md": "0834f56c656c97e721226a335b24a7aa8afe9cd99b4e28e950412bd86ae3d2d6",
+ "docs/TROUBLESHOOTING.md": "90a67baa584fce05c84e5d11f1d50ab6a315febaeaa56fd0156c39974a3ccf4e",
"docs/UPDATE-0.2.md": "cd71d4bb37bfdbb859fa4ea558a91e0cb61f900f0a4390d87f513abb8b8d815d",
"docs/UPDATE-0.3.1.md": "c1232dc6067211467ec713703966472bf75e22a114d62d0f5e0a40acdabff84f",
"docs/UPDATE-0.3.md": "99076ec9ea12986d79b93ec25a729c90403d3432d8e51598db5903b862fba459",
- "docs/VOICE-AND-PROSE.md": "4e60347a8defd69d9b10276f690ea4652830ae594827d81d3ff43d5a608a8b68",
- "docs/VOICE-GRAPHS.md": "ac05b2f2a401664729e8098ed121b348a6fd897b4c671c798eba7c9d395de63b",
- "docs/WINDOWS.md": "8b7ed8cbe01cf69d0dbc16967fa31cbce78ed28bb4475eb27eff7535737847ca",
+ "docs/VISUAL-TOUR.md": "4d7d5161413bb8a5b03fd05aa23cf17653e3234c5265c36099d633e978163852",
+ "docs/VOICE-AND-PROSE.md": "c4974561cba55bff002db17d0ca28a98bffd0c840b418932ee2cc4c66b22e18e",
+ "docs/VOICE-GRAPHS.md": "145ee38601fb73415a008443c474e8173a1d3d66a20064533b175a8be0264d8e",
+ "docs/WINDOWS.md": "5dbc080f0dc1e45ee8c39cbe99d3525efecd60c7bdb9b4fc05757a4a07f0587f",
+ "docs/images/angles-v0.6.webp": "e0ac8d73f231cc9baa3733eb9ac192b603357408cc6a5271ee8cd45b6f259755",
"docs/images/angles.webp": "1f9a0b5b46c9ae7e84ed1f96ea909d8ca6ba3f7daad2d86f424332c0aac1fb4e",
"docs/images/apa-preview-v0.3.webp": "fc2ac3803d88c782e2a02cdfa345ce095e29a184a0ce7d0d6cdc3e7e024aabb0",
+ "docs/images/apa-preview-v0.6.webp": "fea0dbb0a4eb0e1b62a2c9882c4c85716f83fec971b5302b39de6ecf0df71f96",
"docs/images/codex-v0.2.webp": "ffb7333e4e6e3d6ddea2ec85f223c9669f5e272ac98f29918ed62516093dec4c",
+ "docs/images/codex-v0.6.webp": "7c020ed24bc61518a9aa7012160f2ad31edb97a0eb29602e5088a0af0d6e9e6f",
+ "docs/images/dense-graph-v0.6.webp": "bf7f7a0a294b91c1ae18cdd08d93f61f46400ddd98d7c2f0c53dde7b1a483b69",
"docs/images/evidence-v0.3.webp": "c707b06e1b70942769cb39cee36c8ec1e4fdf9a9aa625805c1b2f437853c63fb",
+ "docs/images/evidence-v0.6.webp": "38576350bd49a8e024b276efe41961b6e30505d2a077e361b6992f9ae4577297",
"docs/images/folder-v0.2.webp": "a0a1fbbd5090c61a8593dc9f3410e9114360fa6e1b98caec488f79272b69be74",
+ "docs/images/folder-v0.6.webp": "e7bf273ba474f13573ba485f9c05c6e660d839058517d634f7f12cb6abfdbeea",
"docs/images/four-modes-v0.4.webp": "17dd2f8501e7751c64b98c9b83bc84158f20faf1b80f0bced6f1c6f0250f213a",
+ "docs/images/four-modes-v0.6.webp": "7011323172353ec001acc652ad773eca3bea44fe4079bc9189e43958304542f3",
+ "docs/images/graph-studio-v0.6.webp": "8808a0d352fb6d038f3b70682b01b3076b3188fead79ca30bef041e15060573c",
+ "docs/images/graph-v0.6.webp": "85fa7dd72c6483b5c9a8bf97910356c052b09727bd26507714ab6c4dd149ec2e",
"docs/images/graph.webp": "c14057145f1d11e6aac7a67cd8e7b0d64a26121bfccca502cfb500da124c0d82",
"docs/images/graphify-graph-v0.3.1.webp": "d4f17de276177114038b076c565a4d1c265202e851f295cf3ca1e70ec22ce9a7",
+ "docs/images/graphify-graph-v0.6.webp": "eb7896085ced347f4d3b31c1df8ce21d8c0267f67fcb1ab9702f05b99c2dbc44",
"docs/images/graphify-settings-v0.3.1.webp": "7ba7c6919412204e10231381627430947c26ebfa74db0205398f865511db60c0",
+ "docs/images/graphify-settings-v0.6.webp": "e9cd2cba342bf9603f5fe43a124f5cb584ef32b6a57b9f9f650b9fa25295bc09",
"docs/images/graphpaper-header.svg": "80bfe7844f469ef2c3d63dd7ca2321d6c24ebed7f5c56555d797227e81a7955e",
"docs/images/humanizer-v0.2.webp": "3654ab85e4dee3a15a59c206a7c1f7a14b9f9793479e4938af0f32a9f7937b5e",
+ "docs/images/humanizer-v0.6.webp": "9dd81d8633ab5ef7f55b36e30998ec89b08f075e5564af7f189cd84cc124348f",
+ "docs/images/light-v0.6.webp": "ad7442c3d11b0f2ed0d21f221ed09fa052bc1128108055be43bc680e5ee32d56",
"docs/images/light.webp": "caca0fb694a07bb66ebd68567c64718f1437b8b36d3b8327135a491302a2e2a9",
"docs/images/polemic-v0.4.webp": "aaa09a2e11e793bc0fa9c182e7e7cc09ec802f332dfd591884885b91eb6895f2",
+ "docs/images/polemic-v0.6.webp": "80f454df710158c2e812bc8e5d5f447f43e823f61307263394bf8716a03b3061",
"docs/images/reasoning-v0.3.webp": "2dd1f434baae23e9c6613c9a80d1264655c62a558fdc931b185c96d4e27a5197",
+ "docs/images/reasoning-v0.6.webp": "1ffcefd08ef2ab70c255c26c9eb74a1ddd9f4901e422b59f64088d1b9956d8b3",
"docs/images/research-v0.3.webp": "272ad3ed9a846a5ff3bc67e45045ee509a4c5ada322b961a320ec0f10a88bcd7",
+ "docs/images/research-v0.6.webp": "02440dffef22cb076c95d0a4eccc09f3da3af91ee6fffd45cae7a9ab19f96e25",
+ "docs/images/reusable-voice-v0.6.webp": "4b6b572c97206a3395f0e9f39df3d0260456d88ee6010c3822adfce45c771ce1",
+ "docs/images/screenshots-v0.6.json": "593d2bf9b5b00375b7a66542ce5020156f7f1b840acc3de2993ed9fa0d48f803",
"docs/images/voice-v0.2.webp": "e7e97b982994d026df590ab0769137ea76f016f67b7fed35f41470e90354ec2b",
+ "docs/images/voice-v0.6.webp": "683f718d57d6918c31bb1208123ee87b00308b0926f66a7a3755ce726c85c82e",
+ "docs/images/welcome-v0.6.webp": "3ebc72ac8bbeddf59307aa7a630c3a7d967f57bdba82e2724d0ac471359c052e",
"docs/images/welcome.webp": "6dcdefa7d665b0f2c9363df0cf85c011f9f4cc150f8f261a950d15b265808663",
+ "docs/images/writing-v0.6.webp": "1e0bfd2e13a1e08321b9c63bbd0cfbd008e7a5d300f41661e984ec43f45c1ea7",
"docs/images/writing.webp": "e96666a0ceaddb21bf3b33a3dcd0ec84d1eaad3b410ca29a859b4a6cf313aded",
+ "docs/tests/test_current_release.py": "26d6db347d5d1055d67b0a368e3ec35b4e7fbc6bebe2d44dd233a07bf71eee73",
"docs/validation/browser.json": "5692769d1e74ce27b9ddd97c858573178b7a15bcc47fc6358cf2bac39774668d",
"docs/validation/documentation-refresh.json": "682ebd1947a93b2cd45b1e88bcb16a03b5d94208449a64205b34c06b6a3d034d",
"docs/validation/loopback.json": "6edcf86c685dcf15c926002d6128fd40e4ad5b37f6449973b8f8465d30fb68f9",
@@ -126,7 +150,7 @@
"docs/validation/v0.4.0/package.json": "95434f0949b5ec5018287f8fb2b73cea28e8337c1cb4bbb2c93f0997c25114ad",
"docs/validation/v0.4.0/summary.json": "3e50403b4db2359985c803f0b275aee1fb69ca7fb7a53a4cbbb2d5d6eaa52bdc",
"docs/validation/v0.4.0/windows-unit.xml": "aa1a17c42d241651f9c0b91599d6683ab038644b867127f2d36b19eebdd6eb51",
- "docs/wiki-pages.json": "ef0b18a9821ae2200d709448a29f874ad3842cc20c25ace1d9006350c0da45d3",
+ "docs/wiki-pages.json": "9ca88cc18469a8075e5b72aa4985eabc4be244ba4bfcfe5dca2918da0f4d43b2",
"examples/README.md": "0b7b83630202501a3ba6ad070708419aa23e32c8060ef9447491c6434043bbf6",
"examples/fiction.json": "e3f90c0eed71102640c8a65ae86510e0258e9c90c3cc18730ed05329f632e88d",
"examples/nonfiction.json": "af9196cf15dbe1d431f02c7d8ec11a720f25e1c3e30a756c1f9711b4c65a08cc",