2378 Commits

Author SHA1 Message Date
Source Open
d1b23efea0 fix(composer): stabilize session input sizing (#1387)
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-07 13:38:53 -07:00
Source Open
bc2708e4a9 fix(desktop): keep sticky local server ports stable (#1386)
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-07 12:30:41 -07:00
Source Open
91ffa71cf9 fix(settings): correct ready-to-install update label (#1384)
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-07 12:01:18 -07:00
Source Open
cc6b8b1564 fix(den): streamline LLM provider and skill hub management (#1383)
Reduce redundant helper copy and tighten the Den management layouts so the important controls are easier to scan. Update button content alignment so icon and text actions render consistently across the refreshed screens.

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-07 11:25:38 -07:00
src-opn
d5459798b2 chore: bump version to 0.11.203 openwork-orchestrator-v0.11.203 v0.11.203 2026-04-07 10:49:19 -07:00
Jan Carbonell
fdfb43ca0a cloud api naming (#1382) 2026-04-07 11:04:29 -06:00
Jan Carbonell
222e612f9c Fix/changelog (#1361)
* minor improvement changelog

* test to see if mintlify renders gifs

* test to see if mintlify renders gifs2

* gifs side by side

* minimal

* march 13th

* march 15th

* simpler changelog

* simplified changelog

* mintlify fix

* changelog fix

* correct filename

* mp4 to gif

* simplifying

* weird bug tracking
2026-04-07 11:02:25 -06:00
GitHub Action
814d0aed49 ignore: update download stats 2026-04-07 2026-04-07 12:30:12 +00:00
Jan Carbonell
a16f35bc12 patch so anthropic oauth doesn't show up (#1378) 2026-04-07 01:07:43 -06:00
terrikramer
2535657752 feat(den): refine LLM provider selection UX (#1377)
* feat(den): polish LLM provider dropdowns

* feat(den): refine LLM provider model selection
2026-04-06 21:00:52 -07:00
Source Open
87a543df69 fix(den): validate TypeIDs and refine OpenAPI docs (#1376)
* fix(den): validate TypeIDs in API schemas

Use the shared TypeID utility in den-api request and response schemas so invalid IDs are rejected consistently and Swagger documents the expected prefixes. Keep the API docs aligned with the live validation rules used by the app.

* docs(den): refine OpenAPI route visibility

Hide internal and sensitive Den routes from Swagger so the published docs stay focused on public workflows. Clarify route tags and permission descriptions so ownership and workspace-admin requirements are easier to understand.

---------

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-06 17:38:20 -07:00
Source Open
de767ea3be fix(den): simplify API key screen copy (#1373)
Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-06 14:51:48 -07:00
Jan Carbonell
d7204c371f added servers to openapi docs config so mintlify playground works. (#1374) 2026-04-06 15:47:26 -06:00
Jan Carbonell
d231dc2fac openapi docs added as tab (#1372)
* openapi docs added as tab

* better ordering
2026-04-06 15:36:28 -06:00
Source Open
95f53dfa32 feat(app): add composer tools popover (#1369)
* feat(app): add composer tools popover

* fix(app): highlight connected MCP badges

---------

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-06 13:52:50 -07:00
Source Open
d9e5a33e62 feat(den): document den-api with OpenAPI (#1371)
Generate an OpenAPI spec and Swagger UI from den-api's existing Hono and zod validators so the API stays self-describing. Add route metadata, typed responses, and hide API key creation endpoints from production docs.

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-06 13:48:10 -07:00
Source Open
4f1905882b feat(den): add org API key auth and management (#1368)
* feat(den): add org API key auth and management

Let org owners and admins manage named API keys while keeping keys scoped to the issuing member and org. Reuse existing org middleware so API-key-backed requests behave like normal user actions across Den routes.

* fix(den): polish API key creation flow

Avoid duplicating the visible key prefix in the table preview and make key creation an explicit one-time reveal flow. Show the create form only after the user asks for a new key, then replace it with the copyable secret after issuance.

* fix(den): simplify API key table UI

Remove rate-limit details from the Den web API keys screen and keep the page focused on naming, reveal, and deletion. Leave the generated next-env types file out of the commit.

---------

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-06 11:35:33 -07:00
Source Open
0589897b2f feat(den): add org-managed llm provider library (#1343)
* feat(den): add org-managed llm provider library

Let Den admins curate shared providers and models with encrypted credentials, then let the app connect through the existing add-provider flow. This keeps org-wide model access consistent without requiring per-user OAuth setup.

* docs(den): prefer longer db encryption keys

* fix(den): pass db encryption key through local dev

---------

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-06 10:17:21 -07:00
ben
b3afb8a176 fix(app): keep React session transcript stable across switches (#1365)
* feat(app): add React markdown and transcript parity

Render React session messages with a proper markdown stack, Solid-style user and assistant layouts, and structured tool-call cards so the React path matches the existing transcript experience more closely.

* feat(app): drive React sessions through useChat streaming

Move the React session path to a custom useChat transport backed by the existing OpenCode event stream so transcript state, sending, and streaming are owned by React instead of snapshot polling.

* fix(app): remount React session island per chat

Reset the React session surface when the workspace or session changes so an in-flight useChat stream from one chat cannot continue writing into another chat after a switch.

* fix(app): scope React stream deltas to one session

Reject message.part.delta updates that do not belong to the active session so concurrent OpenCode event streams cannot interleave transcript text across chats in the React session surface.

* fix(app): cache React transcript state per session

Persist streamed UI messages in TanStack query cache per workspace/session so revisiting a running chat shows the last known partial transcript instead of starting empty on remount.

* feat(app): keep React session state in shared sync cache

Move React session transcript ownership out of the mounted chat view by sharing one query client across islands and applying workspace event updates into per-session query cache, mirroring the global sync pattern used by OpenCode.

* fix(app): keep React session sync alive across chat switches

Mount the workspace-scoped React session sync above the per-chat session island so switching chats no longer tears down the event subscription that keeps transcript state updating in the background.

* Revert "fix(app): keep React session sync alive across chat switches"

This reverts commit 15f37a09c1.

* Revert "feat(app): keep React session state in shared sync cache"

This reverts commit 49df59d6ef.

* fix(app): keep React session streams alive across switches

Move React session streaming state into a shared app-level runtime backed by one query client and a workspace-scoped event sync reducer so leaving and returning to a running session restores the current transcript instead of showing an empty pane or leaking between chats.

* fix(app): preserve beginning of streamed text across session switches

Create text parts on first delta arrival instead of silently dropping deltas that arrive before the part shell exists, and ensure the message shell is present before appending any delta. This fixes the bug where switching away from a streaming session and coming back would show only later lines, missing the beginning of the response.

* fix(app): preserve streamed text when re-selecting a busy session

When switching back to a session that is still streaming, the server snapshot returns empty text for in-progress parts. The reconcile call in selectSession was overwriting the locally accumulated text with that empty snapshot. Now both the Solid and React paths preserve the longer local text when the session status is busy.
2026-04-06 08:13:05 -07:00
ben
dfb7f1b2dc fix(startup): move boot orchestration to TS and cut desktop sync stalls (#1366)
Shift startup/loading control to TS with explicit boot phases, cached->live sidebar transitions, and startup trace markers while reducing Rust-side blocking in workspace and orchestrator status paths to improve macOS responsiveness during boot and workspace switching.

Made-with: Cursor
2026-04-06 07:44:34 -07:00
GitHub Action
758513a936 ignore: update download stats 2026-04-06 2026-04-06 12:27:58 +00:00
Jan Carbonell
c0f66a450b Fix/terms (#1364)
* improved security page

* better description.
2026-04-05 20:13:38 -06:00
Jan Carbonell
64675bb16f Update SECURITY.md
updated ben's email
2026-04-05 20:03:00 -06:00
Jan Carbonell
e06dcce546 Refine landing trust center into one-screen review flow (#1363)
* Add trust review pages for enterprise follow-up

* Simplify trust page into decision-maker summary

* Refine landing trust center review flow

* Simplify trust center into one-screen flow

* Remove unused trust topic page component

* trust me, I'm compliant (WIP)

* good copy

* eliminating dead space

* mobile
2026-04-05 18:21:40 -06:00
ben
9365e7d397 feat(app): add incremental React session path (#1362)
* feat(server): add workspace session read APIs

Expose workspace-scoped session list, detail, message, and snapshot reads so the client can fetch session data without depending on activation choreography.

* feat(app): route mounted session reads through OpenWork APIs

Use the new workspace-scoped session read endpoints for mounted OpenWork clients so the current frontend stops depending on direct session proxy reads for list, detail, message, and todo loading.

* feat(app): add React read-only session transcript

Introduce a feature-gated React island for the session transcript so we can replace the session surface incrementally while keeping the Solid shell intact.

* feat(app): add React session composer surface

Extend the feature-gated React session island to own its draft, prompt send, stop flow, and snapshot polling so the session body can evolve independently from the Solid composer.

* feat(app): add React session transition model

Keep the React session surface stable during session switches by tracking rendered vs intended session state and exposing a developer debug panel for render-source and transition inspection.

* docs(prd): add React migration plan to repo

Copy the incremental React adoption PRD into the OpenWork repo so the migration plan lives next to the implementation and PR branch.

* docs(prd): sync full React migration plan

Replace the shortened repo copy with the full incremental React adoption PRD so the implementation branch and product plan stay in sync.

* feat(desktop): add React session launch modes

Add dedicated Tauri dev and debug-build entrypoints for the React session path and honor a build-time React session flag before local storage so the alternate shell is easy to launch and reproduce.

* fix(app): fall back to legacy mounted session reads

Keep the new app working against older OpenWork servers by falling back to the original mounted OpenCode session reads when the workspace-scoped session read APIs are unavailable.
2026-04-05 16:46:06 -07:00
Jan Carbonell
c90a19b765 correct address (#1360) 2026-04-05 13:27:54 -06:00
GitHub Action
562685bdf6 ignore: update download stats 2026-04-05 2026-04-05 12:19:51 +00:00
Jan Carbonell
6cfe7fd2b9 docs(landing): add privacy policy and terms of use pages (#1359)
* docs(landing): add privacy policy and terms of use pages

- Add comprehensive privacy policy covering Desktop App (no tracking),
  Cloud Service (operational telemetry only), and Website (PostHog analytics)
- Add terms of use with AI output disclaimer, export controls, beta features,
  feedback, publicity rights, and JAMS arbitration
- Create reusable LegalPage component and shared parser for .txt legal docs
- Add Privacy and Terms links to site footer
- Both pages render with consistent styling, bold definition terms,
  subheadings for tracking technology categories, and clickable email links

* chore: add .turbo to .gitignore

* fix(landing): improve legal page parser for terms readability

- Detect definition blocks ("Term" means ...) and render as bulleted
  list with bold terms
- Bold ALL CAPS text (warranty disclaimers, arbitration notices, etc.)
- Make URLs clickable links alongside emails
- Distinguish h2 headings (questions, longer titles) from h3 subheadings
  (short section names like "Our IP", "Billing", "Usage Data")

* fix(landing): improve subscription termination wording and URL parsing

- Clarify recurring billing cancellation: users can cancel via account
  settings first, contact email as fallback at our discretion
- Fix URL regex to avoid capturing trailing periods/punctuation

* fix(landing): clarify subscription cancellation — email always accepted, late refunds at our discretion

* docs(landing): convert privacy policy and terms of use to markdown

- Add proper heading hierarchy (# h1, ## h2, ### h3)
- Bold definition terms, ALL CAPS legal clauses, and sub-processor names
- Convert restriction items into bullet points
- Make all URLs and emails clickable markdown links
- Use blockquote for the API key disclaimer note
- Structure tracking technologies as proper subheadings

* refactor(landing): use markdown for legal pages, no new dependencies

- Rename .txt to .md with proper markdown formatting
- Replace txt parser with lean render-markdown.tsx (zero deps, ~120 lines)
- LegalPage handles full page shell — page.tsx files are now 8 lines each
- Add legal-prose CSS for consistent typography
- Delete parse-legal-doc.tsx
2026-04-05 01:15:17 -06:00
Jan Carbonell
1f67c40ecf docs(changelog): rebuild tracker drafts and title-aware docs output (#1358)
* docs(changelog): build fuller tracker drafts through v0.11.202

* docs(changelog): drop publication flags from tracker files

* docs(changelog): generate titles from tracker sections

* docs(changelog): format titles after version links
2026-04-05 00:23:59 -06:00
Jan Carbonell
980cfcc910 Docs/privacy policy (#1356)
* initial privacy policy

* privacy diff

* privacy popopopolicy
2026-04-04 22:27:35 -06:00
Jan Carbonell
48e22d3a75 docs: split release tracker into date-based files and remove heading gaps (#1355)
Split the single release-tracker.md (101 releases) into date-based files
of 25 entries each, and removed blank lines between #### subsection headings
and their content for a more compact format.

Files: release-tracker-2026-02-19.md through release-tracker-2026-04-04.md
2026-04-04 20:26:16 -06:00
Jan Carbonell
3f1e27c1cb fix(docs): replace Mintlify default colors with OpenWork brand colors (#1354)
Swaps the teal Mintlify defaults for OpenWork's actual brand palette:
light mode accent #011627 (dark navy), dark mode accent #3b82f6 (blue),
and buttons #011627 (navy) to match openworklabs.com CTAs.
2026-04-04 19:52:21 -06:00
ben
2b740531a4 fix(app): remove more dead settings shell code (#1350)
* fix(app): remove more dead settings shell code

* fix(app): prune more dead helpers and props
2026-04-04 17:56:43 -07:00
Jan Carbonell
d075f03e75 feat(docs): add changelog page generated from release tracker (#1352)
* feat(docs): add changelog page generated from release tracker

Add a script (scripts/generate-changelog.mjs) that parses
changelog/release-tracker.md and generates a minimalistic
changelog.mdx for the Mintlify docs. Each entry shows the date,
a tag (New/Improved/Adjusted/Misc), and either a one-liner (minor)
or bullet points (major). Version headings link to GitHub compare
URLs derived from consecutive versions.

* fix(docs): use Mintlify Update components and href tab for changelog

Switch changelog.mdx to use Mintlify's built-in <Update> component
with label, description, and tags props. Fix the tab config to use
href instead of pages.

* fix(docs): move changelog from tab to sidebar group

Place changelog as a grouped section in the sidebar navigation
instead of a separate tab that was causing redirect issues.

* fix(docs): plain version in description, link in body

The description prop renders as plain text in Mintlify, so markdown
links showed raw. Move version to plain description and put the
compare link as a "View changes" link inside the Update body.

* fix(docs): version as heading, multiple tags, Mintlify conventions

Use version as ## heading inside each Update body, support multiple
tags (New releases, Improvements, Deprecations), indent content
2 spaces per Mintlify convention, remove description prop.

* fix(docs): update changelog tags with emojis and new names

Tags are now: 🚀 New Features, 🐛 Bug Fixes, 🏗️ Refactoring

* feat(docs): group changelog entries by date

Merge same-day releases into a single Update block. Tags are
unioned across versions, Misc is dropped when real tags exist.
Each version remains as an ## heading within the grouped day.
2026-04-04 18:21:03 -06:00
Jan Carbonell
2651a71348 feat(scripts): enhance find-unused.sh with deeper cross-referencing (#1351)
Extends the unused file detection script with sibling repo CI/CD
cross-referencing, expanded infra coverage (build configs, tsconfig,
docker-compose, .opencode skills), progress indicator, two-bucket
output display, and smart generic filename filtering.

Handles standalone openwork without factory layout gracefully —
auto-detects whether _repos/ exists and skips sibling checks if not.
2026-04-04 17:37:00 -06:00
ben
6827c5670e fix(app): remove dead shell and session rail code (#1347) 2026-04-04 14:25:19 -07:00
Jan Carbonell
ef7663287d docs: expand release tracker through v0.11.125 (#1344)
* docs: expand release tracker through v0.11.125

* docs: extend release tracker through v0.11.150

* docs: extend release tracker through v0.11.175

* docs: extend release tracker through v0.11.201
2026-04-04 14:49:27 -06:00
Jan Carbonell
cdfc4eca8b removing unused functions (#1346)
* removing unused functions

* also not needed (from landing page)

* added readme on script
2026-04-04 14:48:53 -06:00
OpenWork Release Bot
2b42ce12de chore(aur): update PKGBUILD for 0.11.202 2026-04-04 20:46:15 +00:00
src-opn
ff981742bb chore: bump version to 0.11.202 openwork-orchestrator-v0.11.202 v0.11.202 2026-04-04 13:13:29 -07:00
Source Open
52f282b94d fix(i18n): restore missing page translations (#1345)
* fix(i18n): restore missing page translations

* fix(i18n): correct settings locale labels

* fix(dev): avoid reusing another checkout's Vite server

---------

Co-authored-by: src-opn <src-opn@users.noreply.github.com>
2026-04-04 13:12:09 -07:00
Omar McAdam
e40b050c3b Revert "Revert translation breaking behavior (#1342)" (#1348)
This reverts commit 1dd639b033.
2026-04-04 13:11:37 -07:00
ben
1dd639b033 Revert translation breaking behavior (#1342)
* Revert "fix(i18n/zh): cleanups to Chinese translations (#1341)"

This reverts commit 03ee1f2f0e.

* Revert "feat(i18n): add Thai language + missing translations for all other locales (#1339)"

This reverts commit db0f94e36a.

* Revert "feat(i18n): extract en translations — session area (#1249)"

This reverts commit 3271af47b4.

* Revert "feat(i18n): extract en translations — pages (#1250)"

This reverts commit e006acade6.

* Revert "feat(i18n): extract en translations — context/lib/misc (#1251)"

This reverts commit c349413f09.
2026-04-04 12:47:55 -07:00
Ikko Eltociear Ashimine
b5b1feded2 docs: add Japanese README (#1338)
* docs: add Japanese README

* docs: update README_JA.md
2026-04-04 12:46:01 -06:00
Johnny Shields
03ee1f2f0e fix(i18n/zh): cleanups to Chinese translations (#1341)
- Skills: titles use "Skills(技能)", inline uses "skills" following Anthropic official Chinese translations
- MCP: keep as protocol name, never translate to 应用
- Apps (where EN says "Apps"): 应用
- Commands: 命令, Plugins: 插件, Sessions: 会话
- Remove 571 incorrect CJK-Latin spaces
- Standardize 沙盒→沙箱, 您→你, 仪表盘→主页
- Fix 2 MCP keys incorrectly changed to 应用
- Update header comment with terminology glossary
2026-04-04 12:44:19 -06:00
Jan Carbonell
615d11c67a docs: add internal release changelog tracker (#1340)
* docs: add internal release changelog tracker

Prepare a private release-tracking table for OpenWork so changelog summaries can be reviewed in-repo before anything is published publicly.

* docs: switch release tracker to markdown sections

Replace the release tracker table with oldest-to-newest markdown sections so new OpenWork releases can be appended more intuitively.

* docs: use subsection headings in release tracker

Replace top-level label bullets with  subsections so release fields are easier to target while keeping list bullets only where they add structure.

* docs: make publication fields explicit booleans

Set the changelog and docs publication fields to explicit True or False values so the tracker has no ambiguous blanks.

* docs: add release size and importance fields

Track text-line diff size and a normalized major/minor release summary so each release entry can describe both scope and user impact in a machine-friendly way.
2026-04-04 12:32:37 -06:00
Johnny Shields
db0f94e36a feat(i18n): add Thai language + missing translations for all other locales (#1339)
* feat(i18n): complete translations for all 6 locales

- JA: add 704 missing keys (1542 total)
- ZH: add 771 missing keys (1549 total)
- TH: create full Thai locale (1542 keys, adapted from PR #795)
- pt-BR: add 704 missing keys (1543 total)
- VI: add 727 missing keys (1543 total)
- Register Thai locale in i18n/index.ts

All locales now have complete coverage of en.ts keys.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(i18n): review and polish all locale translations

JA: fix 42 workspace/worker terms, 8 spacing issues, 19 ellipsis fixes
ZH: rebrand 50+ MCP→Apps strings, standardize 你/您, remove 6 stale keys
TH: translate 200+ untranslated strings, fix term consistency, port PR #795 hero text
pt-BR: fix gender agreement, align plural placeholders
VI: fix 70+ workspace/worker terminology, verify diacritics

All locales now have 1542 keys matching en.ts exactly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(i18n): final holistic review pass — 8 precision fixes

JA: fix token label/hint to preserve collaborator/owner distinction
ZH: standardize sandbox terminology (沙盒→沙箱, 3 keys)
TH: fix den.signing_in to convey "finishing" not just "signing in"
pt-BR: fix matching context, curated qualifier, missing verb (3 keys)
VI: fix reload vs restart consistency in mcp.auth section

All locales verified: key parity, placeholders, term consistency,
tone, punctuation, and meaning preservation confirmed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(i18n/ja): use 済み for status labels, しました for toasts

Short status labels/badges use noun+済み (completed state):
- common.copied: コピー済み
- message_list.tool_updated_file: {file}を更新済み
- message_list.tool_updated_file_fallback: ファイル更新済み
- skills.install_complete: インストール済み

Toast/notification messages keep しました (past action).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 11:29:50 -06:00
GitHub Action
ca7e46a927 ignore: update download stats 2026-04-04 2026-04-04 12:19:19 +00:00
Jan Carbonell
dd24fbaa3b fix: restore migrated share skill links (#1335)
* fix(docs): restore migrated share skill links

Republish the example skill bundles on share.openworklabs.com so the docs point at live imports again, and align share bundle examples with the current publisher host.

* fix(server): use canonical shared bundle data urls

Rebuild trusted share fetch URLs to the share service's canonical /b/:id/data endpoint and cover the path with the live provider-config-helper bundle URL.
2026-04-04 02:37:32 -06:00
Jan Carbonell
65fbf1f2a8 stupid docs out of sync (#1336) 2026-04-04 02:36:42 -06:00