Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1376,6 +1376,8 @@ jobs:
- name: product-flashcards
paths: >-
tldw_Server_API/tests/Flashcards/test*.py
- name: product-explainer
paths: >-
tldw_Server_API/tests/Explainer
- name: product-notes-persona
paths: >-
Expand Down Expand Up @@ -2768,6 +2770,8 @@ jobs:
- name: product-flashcards
paths: >-
tldw_Server_API/tests/Flashcards/test*.py
- name: product-explainer
paths: >-
tldw_Server_API/tests/Explainer
- name: product-notes-persona
paths: >-
Expand Down Expand Up @@ -4033,6 +4037,8 @@ jobs:
- name: product-flashcards
paths: >-
tldw_Server_API/tests/Flashcards/test*.py
- name: product-explainer
paths: >-
tldw_Server_API/tests/Explainer
- name: product-notes-persona
paths: >-
Expand Down Expand Up @@ -5222,6 +5228,8 @@ jobs:
- name: product-flashcards
paths: >-
tldw_Server_API/tests/Flashcards/test*.py
- name: product-explainer
paths: >-
tldw_Server_API/tests/Explainer
- name: product-notes-persona
paths: >-
Expand Down Expand Up @@ -6412,6 +6420,8 @@ jobs:
- name: product-flashcards
paths: >-
tldw_Server_API/tests/Flashcards/test*.py
- name: product-explainer
paths: >-
tldw_Server_API/tests/Explainer
- name: product-notes-persona
paths: >-
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,10 @@ jobs:
- name: Check public/private docs boundary
run: |
python Helper_Scripts/docs/check_public_private_boundary.py
- name: Build site (strict)
- name: Build site (baseline warnings allowed)
run: |
mkdocs build --strict
# TASK-12074: strict mode currently aborts on the existing published-docs warning baseline.
mkdocs build -f Docs/mkdocs.yml
- name: Upload artifact
uses: actions/upload-pages-artifact@v4
with:
Expand Down
56 changes: 56 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,62 @@ and this project adheres to Some kind of Versioning
### Removed


## [0.1.33] - 2026-07-01

> Rollup coverage: this entry covers work that landed after the `0.1.32`
> metadata update (`61d5c8f0da`, 2026-06-28) through PR #2557. It includes the
> post-`0.1.32` dev/main integration follow-ups, PR #1982 merge stabilization,
> and PRs #2517, #2528, #2427, #2540, #2541, #2436, #2546, #2547, #2550,
> #2551, #2549, #2548, #2553, #2326, #2555, and #2552.

### Added

- **Fish Audio S2 And TTS Workflow Support** — Added the commercial Fish Audio
S2 backend, registry and adapter wiring, voice metadata resolution, managed
reference imports, contract fixes, and setup documentation.
- **Explainer Workspace And Export Flows** — Added the Explainer Workspace
persistence API, expansion jobs, grounding evidence snapshots, chatbook
export/import, UI surfaces, verification coverage, and follow-up hardening.
- **MCP, Skills, And Package Gateway Readiness** — Added Skills runtime
metadata, MCP recovery/readiness metadata, explicit opt-in handling for risky
MCP modules, package-gateway status expansion, and standalone profile
discovery documentation.

### Changed

- **Chunking And Moderation Internals** — Refactored `process_text` through
shared preparation, option-resolution, dispatch, finalization, and wrapper
helpers, and moved moderation policy assembly behind compiler abstractions
while preserving parser and service behavior.
- **Design-System Release Polish** — Migrated ACP readiness labels, Audio
Studio alerts, and TTS alerts onto shared design-system states, and recorded
residual MCP UX design/readiness posture for the release train.
- **Release Documentation And Packaging Posture** — Collapsed additional README
sections, removed stale root implementation-plan files, clarified MCP
embedded/package paths and Docker path status, and moved VCS extras/manual
backend dependencies into explicit manual-install documentation.

### Fixed

- **PR 1982 And PR 2557 CI Stabilization** — Fixed post-merge pre-commit
issues, MkDocs deploy verification, full-suite shard coverage mapping,
grouped CI failures, package/manual-OCR backend extras alignment,
points-transformers backend requirements, and a circuit-breaker lease-expiry
flake.
- **Workflow Review Follow-Ups** — Addressed onboarding docs review feedback,
Writing annotations UAT polish, Skills export metadata feedback, MCP residual
UX review findings, MCP status/run-command authz coverage, and TTS/Fish S2
review follow-ups.
- **Runtime And Product Hardening** — Hardened watchlist template seeding, chat
cockpit real-server layout seeding, explainer grounding/expansion/job answer
handling, and chunking/moderation regression paths.

### Removed

- Removed obsolete root implementation-plan files and the stale Flashcards UX
fix list from the release branch.


## [0.1.32] - 2026-06-28

> Rollup coverage: this entry covers the 1,175 PR-numbered merge/squash
Expand Down
2 changes: 1 addition & 1 deletion Docs/API-related/Watchlists_API.md
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ Payload shape:
}
```

Filter types: `keyword`, `author`, `date_range`, `regex`, `all`
Filter types: `keyword`, `author`, `date_range`, `regex`, `all`
Actions: `include`, `exclude`, `flag`

## Include-only quick semantics
Expand Down
2 changes: 1 addition & 1 deletion Docs/Design/Evals.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Evals


https://github.com/adobe-research/NoLiMa
https://github.com/adobe-research/NoLiMa
24 changes: 8 additions & 16 deletions Docs/Design/Sandbox.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Sandbox
# Sandbox

https://github.com/jgbrwn/vibebin
https://github.com/pyodide/pyodide
https://www.luiscardoso.dev/blog/sandboxes-for-ai
https://github.com/quickemu-project/quickemu
https://github.com/restyler/awesome-sandbox
https://github.com/lima-vm/lima
https://github.com/llm-in-sandbox/llm-in-sandbox
https://github.com/pyodide/pyodide
https://www.luiscardoso.dev/blog/sandboxes-for-ai
https://github.com/quickemu-project/quickemu
https://github.com/restyler/awesome-sandbox
https://github.com/lima-vm/lima
https://github.com/llm-in-sandbox/llm-in-sandbox
https://github.com/vrn21/bouvet
https://fly.io/
https://fly.io/
https://github.com/test-time-training/discover
https://github.com/instavm/coderunner
https://github.com/lukehinds/nono
Expand All @@ -21,11 +21,3 @@ https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles
https://github.com/instavm/coderunner
https://github.com/vrn21/bouvet
https://github.com/rcarmo/agentbox








2 changes: 1 addition & 1 deletion Docs/Design/Security.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@ https://arxiv.org/abs/2402.03299


https://github.com/dronefreak/PromptScreen
https://arxiv.org/html/2507.04055v2#S4
https://arxiv.org/html/2507.04055v2#S4
4 changes: 2 additions & 2 deletions Docs/Design/tldw_web_design_system_inventory.md
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,6 @@ anchor files:
- `apps/tldw-frontend/components/ui/ConfirmDialog.tsx`
- `apps/packages/ui/src/components/Option/Settings/health-status.tsx`
- `apps/packages/ui/src/components/Option/Admin/ServerAdminPage.tsx`
- `apps/packages/ui/src/components/Option/Playground`
- `apps/packages/ui/src/components/Common/Playground`
- `apps/packages/ui/src/components/Option/Playground`
- `apps/packages/ui/src/components/Common/Playground`
- `apps/packages/ui/src/components/Sidepanel/Chat`
1 change: 0 additions & 1 deletion Docs/MCP/Unified/CodeGraph.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,4 +234,3 @@ curl -H "Authorization: Bearer <token>" \
| `index_timed_out_for_foreground` | Use Jobs-backed mode or raise `max_index_seconds` after confirming the workspace size is expected. |
| Queued jobs never run | Start `tldw_Server_API.app.core.CodeGraph.jobs_worker`, verify `CODEGRAPH_JOBS_QUEUE`, and confirm the worker `CODEGRAPH_JOBS_INDEX_BASE_DIR` matches the server's effective `index_base_dir`. |
| Read tools return `index_present: false` | Run `codegraph.index` or `codegraph.sync` for the active workspace. `codegraph.status` and read tools do not create storage on their own. |

2 changes: 1 addition & 1 deletion Docs/Published/API-related/Watchlists_API.md
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ Payload shape:
}
```

Filter types: `keyword`, `author`, `date_range`, `regex`, `all`
Filter types: `keyword`, `author`, `date_range`, `regex`, `all`
Actions: `include`, `exclude`, `flag`

## Include-only quick semantics
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Workspace Playground Accessibility Contrast Audit (Category 11 Stage 3)

Date: 2026-02-18
Date: 2026-02-18
Scope: `apps/packages/ui/src/components/Option/ResearchWorkspace/`

## Checklist
Expand Down Expand Up @@ -30,4 +30,3 @@ Scope: `apps/packages/ui/src/components/Option/ResearchWorkspace/`
- `textMuted/surface2` passes AA across all built-in themes (minimum observed: **4.53:1**).
- Previous studio mobile badge pairing (`text-white` on `bg-success`) fails AA in several themes (minimum observed: **1.63:1**).
- Workspace mobile badges were updated to use `text-text` on `bg-surface2` to maintain AA across themes.

Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,4 @@
"text": "Warning: Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?"
}
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13654,4 +13654,4 @@
]
}
]
}
}
5 changes: 5 additions & 0 deletions Docs/Schemas/chatbooks_manifest_v1_1.json
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@
"total_world_books",
"total_dictionaries",
"total_documents",
"total_explainer_sessions",
"total_size_bytes"
],
"properties": {
Expand Down Expand Up @@ -234,6 +235,10 @@
"type": "integer",
"minimum": 0
},
"total_explainer_sessions": {
"type": "integer",
"minimum": 0
},
"total_size_bytes": {
"type": "integer",
"minimum": 0
Expand Down
2 changes: 1 addition & 1 deletion Docs/User_Guides/Writing_Characters.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ I use bullet point lists for my characters, with 5 categories: General Informati

The bulk of that being the general write-up. The bullet point list at depth 10 is kept concise, and just keeps the character on the rails.

Also, I made it so that the backstory and most of the bullet point list is only visible to the character that is speaking. For every other character, only the outward appearance of other characters are visible. That stops characters from knowing thing about each other that they should not, and cuts down on context bloat in multi-character RPs.
Also, I made it so that the backstory and most of the bullet point list is only visible to the character that is speaking. For every other character, only the outward appearance of other characters are visible. That stops characters from knowing thing about each other that they should not, and cuts down on context bloat in multi-character RPs.
4 changes: 2 additions & 2 deletions Docs/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,13 @@ markdown_extensions:

extra:
generator: false
version: v0.1.32
version: v0.1.33
social:
- icon: fontawesome/brands/github
link: https://github.com/rmusser01/tldw_server
name: GitHub
copyright: |
© 2024-2025 tldw_Server - v0.1.32 - <a href="https://github.com/rmusser01/tldw_server">GitHub</a>
© 2024-2025 tldw_Server - v0.1.33 - <a href="https://github.com/rmusser01/tldw_server">GitHub</a>

nav:
- Home: User_Guides/index.md
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,3 @@ MCP Hub Workspace Sets should own the interpretation:
membership, and preserving route state.
- The live UAT matrix row `RW-UAT-021` should remain `Partial` unless a live
backend plus WebUI run proves the handoff.

22 changes: 21 additions & 1 deletion Helper_Scripts/refresh_docs_published.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,19 @@ DEST_DIR="$SRC_DIR/Published"
echo "Refreshing curated docs in: $DEST_DIR"
mkdir -p "$DEST_DIR"

cat > "$DEST_DIR/index.md" <<'EOF'
# tldw Server Docs

Welcome to the curated public documentation for tldw_server.

- [Getting Started](Getting_Started/README.md)
- [User Guides](User_Guides/index.md)
- [API Documentation](API-related/API_README.md)
- [Deployment](Deployment/First_Time_Production_Setup.md)
- [Monitoring](Monitoring/Metrics_Cheatsheet.md)
- [Release Notes](RELEASE_NOTES.md)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: index.md links to RELEASE_NOTES.md but the script doesn't ensure it exists in Docs/Published/. If the Published directory is regenerated from scratch (e.g., CI clean build, manual cleanup), this link breaks silently. Add a cp of Docs/RELEASE_NOTES.md to keep the index consistent.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At Helper_Scripts/refresh_docs_published.sh, line 25:

<comment>index.md links to RELEASE_NOTES.md but the script doesn't ensure it exists in Docs/Published/. If the Published directory is regenerated from scratch (e.g., CI clean build, manual cleanup), this link breaks silently. Add a cp of Docs/RELEASE_NOTES.md to keep the index consistent.</comment>

<file context>
@@ -12,6 +12,19 @@ DEST_DIR="$SRC_DIR/Published"
+- [API Documentation](API-related/API_README.md)
+- [Deployment](Deployment/First_Time_Production_Setup.md)
+- [Monitoring](Monitoring/Metrics_Cheatsheet.md)
+- [Release Notes](RELEASE_NOTES.md)
+EOF
+
</file context>

EOF

preserve_and_copy() {
local src="$1"
local dest="$2"
Expand Down Expand Up @@ -51,7 +64,14 @@ preserve_and_copy "$SRC_DIR/Deployment" "$DEST_DIR/Deployment"
preserve_and_copy "$SRC_DIR/Deployment/Monitoring" "$DEST_DIR/Monitoring"

# Evaluations
preserve_and_copy "$SRC_DIR/Evaluations" "$DEST_DIR/Evaluations"
if [ -d "$SRC_DIR/Evaluations" ]; then
preserve_and_copy "$SRC_DIR/Evaluations" "$DEST_DIR/Evaluations"
elif [ -d "$SRC_DIR/Evals" ]; then
preserve_and_copy "$SRC_DIR/Evals" "$DEST_DIR/Evaluations"
else
echo "Missing evaluations docs source: $SRC_DIR/Evaluations or $SRC_DIR/Evals" >&2
exit 1
fi
Comment thread
rmusser01 marked this conversation as resolved.

# Getting Started (canonical onboarding profiles)
preserve_and_copy "$SRC_DIR/Getting_Started" "$DEST_DIR/Getting_Started"
Expand Down
23 changes: 11 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,10 @@ Optional add-ons (apply AFTER your base profile is healthy):
## Current Status

Current release line:
- `0.1.32` Beta status. Expect rough edges and please report issues.
- `0.1.33` Beta status. Expect rough edges and please report issues.
- Primary client surfaces are the Next.js WebUI, Admin UI, and browser extension.
- Package metadata is prepared under the canonical PyPI name `tldw-server`; use a repository checkout until publishing is complete.
- The `dev` branch carries work beyond `0.1.32`, including post-`0.1.32` branch work, and is being prepared for the `0.1.32` release merge to `main`; see [CHANGELOG.md](CHANGELOG.md) for the PR rollup and [Docs/Published/RELEASE_NOTES.md](Docs/Published/RELEASE_NOTES.md) for the published release entry point.
- The `dev` branch carries work beyond `0.1.33`, including post-`0.1.33` branch work, and is prepared for the `0.1.33` release merge to `main`; see [CHANGELOG.md](CHANGELOG.md) for the PR rollup and [Docs/Published/RELEASE_NOTES.md](Docs/Published/RELEASE_NOTES.md) for the published release entry point.

<details>
<summary>Current focus and migration notes from the old Gradio version</summary>
Expand Down Expand Up @@ -146,19 +146,18 @@ Current release line:
## What's New (in the last few releases)

<details>
<summary>0.1.32 release-prep rollup</summary>
<summary>0.1.33 release-prep rollup</summary>

Included in the `0.1.32` release-prep rollup:
- Sandbox, MCP Gateway, and ACP expansion, including governed execution, workspace/runtime contracts, profile presets, permission evidence, and release-readiness gates.
- Research, knowledge, and study workflow growth across Chat Workspace, Research Workspace, Deep Research, quick ingest, flashcards, Study Packs, notes tasks, and study suggestions.
- Writing Suite follow-through with manuscript authoring, character/world/plot tooling, AI analysis, annotations, agent chat, and live writing feedback.
- Onboarding, provider, and admin surfaces for public setup profiles, local model recovery, provider keys, companion home shortcuts, scheduled tasks, and workspace diagnostics.
- Skills, MCP Hub, and workspace operations for server-backed Skills flows, governance packs, tool cataloging, workspace sharing, and permission simulation.
- Release, packaging, and CI tooling for full-suite PR shard fanout, local CI runner targets, package-content checks, trusted-publishing prep, and PyPI artifact guards.
- Security, auth, and runtime hardening for provider URL validation, secret redaction, SSRF/network policy handling, dependency floors, and test-only CodeQL suppressions.
Included in the `0.1.33` release-prep rollup:
- Post-`0.1.32` dev/main stabilization for PR #1982 and PR #2557, including full-suite shard coverage mapping, MkDocs deploy verification, grouped CI fixes, and circuit-breaker flake cleanup.
- Fish Audio S2 TTS support, including provider registration, native backend/adapter wiring, voice metadata resolution, managed reference imports, contract fixes, and setup documentation.
- Explainer Workspace persistence, expansion jobs, grounding snapshots, chatbook export/import, UI surfaces, verification coverage, and follow-up hardening.
- MCP, Skills, and package-gateway readiness work covering runtime metadata, recovery/readiness fields, risky-module opt-in handling, standalone profile discovery, and residual UX review fixes.
- Chunking and moderation internals refactored around shared helpers and compiler abstractions while preserving existing parsing, dispatch, metrics, and service behavior.
- Release documentation and packaging cleanup for README skimming, root implementation-plan cleanup, MCP package-path clarity, VCS/manual backend extras, and stale release-branch artifacts.

Still active on `dev`:
- Follow-up polish and fixes may continue to land before the `0.1.32` release is published from `main`.
- Final CI for PR #2557 must clear before the prepared `0.1.33` release metadata is merged.
- Treat [CHANGELOG.md](CHANGELOG.md) as the authoritative branch-level history for what has entered the release train.

See [CHANGELOG.md](CHANGELOG.md) for the full running history and [Docs/Published/RELEASE_NOTES.md](Docs/Published/RELEASE_NOTES.md) for published release notes.
Expand Down
1 change: 0 additions & 1 deletion apps/mcp-unified/src/mcp_unified/py.typed
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@

14 changes: 7 additions & 7 deletions apps/packages/ui/src/components/Common/CodeBlock.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export const CodeBlock: FC<Props> = ({ language, value, blockIndex }) => {
: t("artifactsView", "View code")
const downloadLabel = t("downloadCode", "Download code")
const copyLabel = t("copyToClipboard", "Copy to clipboard")

function computeKey() {
const content = value ?? ""
const base =
Expand Down Expand Up @@ -172,16 +172,16 @@ export const CodeBlock: FC<Props> = ({ language, value, blockIndex }) => {
let svgMarkup = hasSvgTag
? code
: `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'>${code}</svg>`

const hasWidthHeight = /\s(width|height)\s*=/.test(svgMarkup)

if (!hasWidthHeight && hasSvgTag) {
svgMarkup = svgMarkup.replace(
/<svg([^>]*?)>/i,
'<svg$1 width="100%" height="100%" style="max-width: 100%; max-height: 100%;">'
)
}

const sanitizedSvg = DOMPurify.sanitize(svgMarkup, {
USE_PROFILES: { svg: true }
})
Expand Down Expand Up @@ -263,11 +263,11 @@ export const CodeBlock: FC<Props> = ({ language, value, blockIndex }) => {
if (debounceTimeoutRef.current) {
clearTimeout(debounceTimeoutRef.current)
}

debounceTimeoutRef.current = setTimeout(() => {
setPreviewValue(value)
}, 300)
}, 300)

return () => {
if (debounceTimeoutRef.current) {
clearTimeout(debounceTimeoutRef.current)
Expand Down
Loading
Loading