mirror of
https://github.com/different-ai/openwork
synced 2026-04-25 17:15:34 +02:00
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.
This commit is contained in:
536
packages/docs/changelog.mdx
Normal file
536
packages/docs/changelog.mdx
Normal file
@@ -0,0 +1,536 @@
|
||||
---
|
||||
title: "Changelog"
|
||||
---
|
||||
<Update label="April 4th" tags={["🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.201](https://github.com/different-ai/openwork/compare/v0.11.200...v0.11.201)
|
||||
|
||||
Cleans up workspace list behavior, reduces session flicker, and fixes Den skill editing and invite-state handling.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="April 3rd" tags={["🚀 New Features"]}>
|
||||
|
||||
## [v0.11.200](https://github.com/different-ai/openwork/compare/v0.11.199...v0.11.200)
|
||||
|
||||
- Added an OpenWork Cloud team skills catalog to the app's Skills page, including refresh, install, and share-to-team flows.
|
||||
- Added Den teams and full skill hub management so organizations can structure, edit, and browse shared skill collections.
|
||||
- Moved billing into org creation and enforced org limits so team setup reflects plan constraints earlier in the workflow.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="April 2nd" tags={["🚀 New Features", "🐛 Bug Fixes", "🏗️ Refactoring"]}>
|
||||
|
||||
## [v0.11.199](https://github.com/different-ai/openwork/compare/v0.11.198...v0.11.199)
|
||||
|
||||
- Added a new landing pricing flow with paid Windows messaging and cleaner Cloud navigation into the app.
|
||||
- Expanded Den with skill hubs, a Hono-based `den-api`, and a smoother org-invite signup path for team administration.
|
||||
- Improved day-to-day reliability with developer log export, per-conversation draft persistence, and recovery after immediate send failures.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 31st" tags={["🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.198](https://github.com/different-ai/openwork/compare/v0.11.197...v0.11.198)
|
||||
|
||||
Fixes a local-workspace switching race so the engine restarts correctly when moving between local workspaces.
|
||||
|
||||
## [v0.11.197](https://github.com/different-ai/openwork/compare/v0.11.196...v0.11.197)
|
||||
|
||||
- Protected workspace sharing by gating sensitive exports and forcing bundle fetches to stay on the configured publisher unless users explicitly opt into a warning-backed manual import.
|
||||
- Kept orchestrator secrets out of process arguments and logs so local and hosted runs leak less sensitive data.
|
||||
- Fixed sidebar and boot behavior by stopping automatic Welcome workspace creation and correcting which sessions appear in collapsed workspace lists.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 30th" tags={["🚀 New Features", "🐛 Bug Fixes", "🏗️ Refactoring"]}>
|
||||
|
||||
## [v0.11.196](https://github.com/different-ai/openwork/compare/v0.11.195...v0.11.196)
|
||||
|
||||
- Made OpenWork boot back into the last session and land on the session view instead of routing users through a dashboard-first shell.
|
||||
- Rebuilt automations around live scheduler jobs with a dedicated Automations page and more direct settings ownership.
|
||||
- Smoothed workspace startup and switching by fixing welcome-workspace bootstrap, sidebar refresh behavior, and several shell-level loading interruptions.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 27th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.195](https://github.com/different-ai/openwork/compare/v0.11.194...v0.11.195)
|
||||
|
||||
Sharpens Den worker connection flows while making desktop model, update, and local workspace behavior more reliable.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 26th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.194](https://github.com/different-ai/openwork/compare/v0.11.193...v0.11.194)
|
||||
|
||||
Turns auto compaction into a working app flow, simplifies Den local development, and keeps more settings and automation flows live in place.
|
||||
|
||||
## [v0.11.193](https://github.com/different-ai/openwork/compare/v0.11.192...v0.11.193)
|
||||
|
||||
- Added Cloud team template sharing flows so teams can publish and reuse workspace templates directly from the app.
|
||||
- Introduced Den organizations, member permissions, and org-scoped template sharing surfaces for multi-user Cloud administration.
|
||||
- Added clearer Cloud sign-in prompts and a manual fallback so team-sharing flows can recover when the automatic sign-in path stalls.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 25th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.192](https://github.com/different-ai/openwork/compare/v0.11.191...v0.11.192)
|
||||
|
||||
- Made workspace switching feel safer and steadier by keeping selection separate from runtime activation and preserving sticky local worker ports.
|
||||
- Expanded workspace templates so shared imports can carry extra `.opencode` files and starter sessions end to end.
|
||||
- Fixed blueprint-seeded session materialization so starter conversations render correctly instead of dropping their initial state.
|
||||
|
||||
## [v0.11.191](https://github.com/different-ai/openwork/compare/v0.11.190...v0.11.191)
|
||||
|
||||
Makes detached worker sharing survive restarts and tightens settings behavior around disconnected providers.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 24th" tags={["🐛 Bug Fixes", "🚀 New Features"]}>
|
||||
|
||||
## [v0.11.190](https://github.com/different-ai/openwork/compare/v0.11.189...v0.11.190)
|
||||
|
||||
Stabilizes sharing first, then smooths provider auth timing and refreshes the app shell layout.
|
||||
|
||||
## [v0.11.189](https://github.com/different-ai/openwork/compare/v0.11.188...v0.11.189)
|
||||
|
||||
Rolls the release line forward with no visible product or workflow changes.
|
||||
|
||||
## [v0.11.188](https://github.com/different-ai/openwork/compare/v0.11.187...v0.11.188)
|
||||
|
||||
Restores the prior feedback flow by removing the Loops feedback template from the landing feedback route.
|
||||
|
||||
## [v0.11.187](https://github.com/different-ai/openwork/compare/v0.11.186...v0.11.187)
|
||||
|
||||
Fixes Windows path handling so session and workspace scope comparisons stay consistent across standard, verbatim, and UNC-prefixed directories.
|
||||
|
||||
## [v0.11.186](https://github.com/different-ai/openwork/compare/v0.11.185...v0.11.186)
|
||||
|
||||
Fixes local workspace scoping during reconnects and bootstrap so sessions stay attached to the right directory.
|
||||
|
||||
## [v0.11.185](https://github.com/different-ai/openwork/compare/v0.11.184...v0.11.185)
|
||||
|
||||
- Defaulted local workers to localhost-only and hardened public auth and publishing flows so sharing surfaces are safer unless users explicitly opt in.
|
||||
- Put messaging behind explicit opt-in and added a warning before creating public Telegram bots so public exposure is more deliberate.
|
||||
- Added a guided Control Chrome setup flow and Brazilian Portuguese localization to make setup clearer for more users.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 23rd" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.184](https://github.com/different-ai/openwork/compare/v0.11.183...v0.11.184)
|
||||
|
||||
Refocuses the docs around a slimmer Quickstart so the main onboarding path is easier to follow.
|
||||
|
||||
## [v0.11.183](https://github.com/different-ai/openwork/compare/v0.11.182...v0.11.183)
|
||||
|
||||
Adds Exa to Advanced settings while backing out an unready macOS path-handling change to keep the release stable.
|
||||
|
||||
## [v0.11.182](https://github.com/different-ai/openwork/compare/v0.11.181...v0.11.182)
|
||||
|
||||
- Moved local workspace ownership into OpenWork server so reconnects, starter-workspace setup, and sidebar state stay aligned across app surfaces.
|
||||
- Simplified the remote workspace connect modal so adding a worker feels clearer and lighter.
|
||||
- Polished session tool traces by moving the chevron affordance to the right for faster scanning.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 22nd" tags={["🐛 Bug Fixes", "🏗️ Refactoring", "🚀 New Features"]}>
|
||||
|
||||
## [v0.11.181](https://github.com/different-ai/openwork/compare/v0.11.180...v0.11.181)
|
||||
|
||||
Republishes the release line with synchronized package metadata and no clear additional user-facing product changes.
|
||||
|
||||
## [v0.11.179](https://github.com/different-ai/openwork/compare/v0.11.178...v0.11.179)
|
||||
|
||||
Simplifies Den checkout and workspace setup flows while cleaning up a few visible desktop and sharing rough edges.
|
||||
|
||||
## [v0.11.178](https://github.com/different-ai/openwork/compare/v0.11.177...v0.11.178)
|
||||
|
||||
- Redesigned workspace sharing and the right sidebar, including nested child sessions and cleaner session chrome so navigation feels more structured.
|
||||
- Made model behavior controls model-aware with clearer provider and picker behavior across the composer and settings.
|
||||
- Routed in-app feedback to a hosted form and restored key session affordances like the in-composer Run action while polishing settings and transcript surfaces.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 20th" tags={["🐛 Bug Fixes", "🚀 New Features", "🏗️ Refactoring"]}>
|
||||
|
||||
## [v0.11.177](https://github.com/different-ai/openwork/compare/v0.11.176...v0.11.177)
|
||||
|
||||
Gets new users to the right install path faster and makes orchestrator installs recover more reliably when local binaries are missing.
|
||||
|
||||
## [v0.11.175](https://github.com/different-ai/openwork/compare/v0.11.174...v0.11.175)
|
||||
|
||||
Adds settings-based folder authorization and clearer server-backed empty states first, then tightens sidebar and composer readability across the app shell.
|
||||
|
||||
## [v0.11.173](https://github.com/different-ai/openwork/compare/v0.11.172...v0.11.173)
|
||||
|
||||
Adds Daytona worker activity heartbeats first, then improves local tool spawning so nvm-managed Node setups work more reliably.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 19th" tags={["🐛 Bug Fixes", "🏗️ Refactoring", "🚀 New Features"]}>
|
||||
|
||||
## [v0.11.172](https://github.com/different-ai/openwork/compare/v0.11.171...v0.11.172)
|
||||
|
||||
Standardizes the published server package name first, then tightens session trace alignment so run timelines are easier to scan.
|
||||
|
||||
## [v0.11.170](https://github.com/different-ai/openwork/compare/v0.11.169...v0.11.170)
|
||||
|
||||
- Tailored the hosted web app and Den onboarding flow for OpenWork Cloud with smoother app routes, checkout, and billing recovery.
|
||||
- Kept remote connections steadier by persisting worker share tokens across restarts, restoring repeated shared-skill deeplinks, and preserving open-in-web auto-connect behavior.
|
||||
- Improved day-to-day usability with self-serve Cloud settings, OpenAI headless auth in the provider modal, worker overlays during connect, and tray-on-close desktop behavior.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 18th" tags={["🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.169](https://github.com/different-ai/openwork/compare/v0.11.168...v0.11.169)
|
||||
|
||||
Hardens Den web handoff and open-in-web routing first, then restores a cleaner, more predictable session and sharing experience.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 17th" tags={["🐛 Bug Fixes", "🚀 New Features"]}>
|
||||
|
||||
## [v0.11.168](https://github.com/different-ai/openwork/compare/v0.11.167...v0.11.168)
|
||||
|
||||
Recovers the release with the intended Cloud-settings gating behavior and repaired release assets so installs can proceed cleanly again.
|
||||
|
||||
## [v0.11.166](https://github.com/different-ai/openwork/compare/v0.11.165...v0.11.166)
|
||||
|
||||
- Added a Daytona-backed Den Docker dev flow with the new `den-v2` service set, worker proxy, shared DB package, and provisioning helpers.
|
||||
- Improved Den org and environment handling so local and dev setups sync more reliably and generate unique org slugs.
|
||||
- Fixed the local web helper path so `webdev:local` starts reliably from the script-driven workflow.
|
||||
|
||||
## [v0.11.165](https://github.com/different-ai/openwork/compare/v0.11.164...v0.11.165)
|
||||
|
||||
- Added OpenWork Cloud auth and worker-open flows in Settings so users can sign in and open cloud workers directly from the app.
|
||||
- Improved Den desktop sign-in handoff through the web, including installed desktop scheme support and Better Auth trusted-origin handling.
|
||||
- Restored shared bundle installs and polished share previews, while also improving provider credential cleanup and Den landing CTA routing.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 16th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.164](https://github.com/different-ai/openwork/compare/v0.11.163...v0.11.164)
|
||||
|
||||
Keeps nested task context and remote permission recovery clearer first, then broadens sharing and localization polish across the product.
|
||||
|
||||
## [v0.11.163](https://github.com/different-ai/openwork/compare/v0.11.162...v0.11.163)
|
||||
|
||||
Adds custom GitHub skill hub repositories first, then smooths session interactions so cloud and extension workflows feel more reliable.
|
||||
|
||||
## [v0.11.162](https://github.com/different-ai/openwork/compare/v0.11.161...v0.11.162)
|
||||
|
||||
Improves local Docker dev-stack defaults so OpenWork is easier to test from other devices over LAN or other public local-network paths.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 15th" tags={["🐛 Bug Fixes", "🚀 New Features"]}>
|
||||
|
||||
## [v0.11.160](https://github.com/different-ai/openwork/compare/v0.11.159...v0.11.160)
|
||||
|
||||
Polishes several high-traffic web and session surfaces so Den entry, downloads, and nested session browsing feel clearer and more reliable.
|
||||
|
||||
## [v0.11.159](https://github.com/different-ai/openwork/compare/v0.11.158...v0.11.159)
|
||||
|
||||
Brings the app cloud-worker flow in line with the Den landing experience and cleans up a couple of visible web regressions around billing and marketing surfaces.
|
||||
|
||||
## [v0.11.155](https://github.com/different-ai/openwork/compare/v0.11.154...v0.11.155)
|
||||
|
||||
Hardens release diagnostics behind the scenes, with no clear new end-user OpenWork behavior in this release.
|
||||
|
||||
## [v0.11.151](https://github.com/different-ai/openwork/compare/v0.11.150...v0.11.151)
|
||||
|
||||
Makes feedback submissions reach the OpenWork team inbox reliably again.
|
||||
|
||||
## [v0.11.150](https://github.com/different-ai/openwork/compare/v0.11.149...v0.11.150)
|
||||
|
||||
Smooths session setup and chat rendering while routing in-app feedback to the team inbox and keeping settings layout steady.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 14th" tags={["🐛 Bug Fixes", "🚀 New Features"]}>
|
||||
|
||||
## [v0.11.149](https://github.com/different-ai/openwork/compare/v0.11.148...v0.11.149)
|
||||
|
||||
Simplifies shared skill pages and stabilizes both skill importing and staying pinned to the latest reply during long chats.
|
||||
|
||||
## [v0.11.148](https://github.com/different-ai/openwork/compare/v0.11.147...v0.11.148)
|
||||
|
||||
- Den onboarding is now a guided stepper with clearer loading, provisioning, and browser-access states.
|
||||
- OpenWork Share now centers on publishing a single skill, with cleaner frontmatter handling and a smoother import path.
|
||||
- Settings gained a polished feedback entrypoint, while session surfaces were tightened with slimmer sidebars and clearer quickstart tips.
|
||||
|
||||
## [v0.11.147](https://github.com/different-ai/openwork/compare/v0.11.146...v0.11.147)
|
||||
|
||||
Expands shared-skill importing to existing workers and makes Share more reliable for long skills and Den worker provisioning.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 13th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.146](https://github.com/different-ai/openwork/compare/v0.11.145...v0.11.146)
|
||||
|
||||
Adds direct failed-worker recovery and smarter shared-skill importing while refreshing the workspace shell toward a calmer operator layout.
|
||||
|
||||
## [v0.11.145](https://github.com/different-ai/openwork/compare/v0.11.144...v0.11.145)
|
||||
|
||||
Adds a Den admin backoffice while sharpening Den worker flows, support capture, and desktop skill-sharing reliability.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 12th" tags={["🐛 Bug Fixes", "🚀 New Features", "🏗️ Refactoring"]}>
|
||||
|
||||
## [v0.11.144](https://github.com/different-ai/openwork/compare/v0.11.143...v0.11.144)
|
||||
|
||||
Restores reliable workspace-shell navigation and desktop recovery while polishing Den pricing surfaces and MCP browser setup.
|
||||
|
||||
## [v0.11.143](https://github.com/different-ai/openwork/compare/v0.11.142...v0.11.143)
|
||||
|
||||
- Den now allows one free cloud worker without billing and adds Google signup, making it much easier to get started.
|
||||
- The Den landing page was overhauled with a new hero, comparison, support, and CTA flow that explains the product more clearly.
|
||||
- Session and sharing surfaces were polished with inline chat errors, no raw markdown flash during streaming, and refreshed share bundle pages and previews.
|
||||
|
||||
## [v0.11.142](https://github.com/different-ai/openwork/compare/v0.11.141...v0.11.142)
|
||||
|
||||
Rolls a coordinated patch cut that keeps shipped OpenWork artifacts aligned without adding material user-facing changes.
|
||||
|
||||
## [v0.11.141](https://github.com/different-ai/openwork/compare/v0.11.140...v0.11.141)
|
||||
|
||||
Keeps app and worker launches on the new session screen while improving session clarity and polishing sharing and support flows.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 11th" tags={["🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.140](https://github.com/different-ai/openwork/compare/v0.11.138...v0.11.140)
|
||||
|
||||
Makes shared skill imports land on the newly created worker and gives users clearer sandbox startup diagnostics.
|
||||
|
||||
## [v0.11.138](https://github.com/different-ai/openwork/compare/v0.11.137...v0.11.138)
|
||||
|
||||
Fixes shared bundle imports so they route through the blueprints flow and land in the expected workspace setup path.
|
||||
|
||||
## [v0.11.137](https://github.com/different-ai/openwork/compare/v0.11.136...v0.11.137)
|
||||
|
||||
Stabilizes MCP authentication and improves model picker clarity so provider connection and model selection feel more dependable.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 10th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.136](https://github.com/different-ai/openwork/compare/v0.11.135...v0.11.136)
|
||||
|
||||
- Turned OpenWork Share into a worker packager and simplified package creation so shared bundles are more useful as real setup artifacts.
|
||||
- Replatformed OpenWork Share onto the Next.js App Router and refreshed its landing and bundle pages for a cleaner public sharing experience.
|
||||
- Fixed provider OAuth polling and added provider disconnect controls in Settings so account connection management is more reliable.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 6th" tags={["🚀 New Features"]}>
|
||||
|
||||
## [v0.11.135](https://github.com/different-ai/openwork/compare/v0.11.134...v0.11.135)
|
||||
|
||||
Keeps packaged OpenCode resolution more consistent across CI, prerelease, and release paths, with no notable direct product-surface changes.
|
||||
|
||||
## [v0.11.134](https://github.com/different-ai/openwork/compare/v0.11.133...v0.11.134)
|
||||
|
||||
Simplifies remote MCP connection setup and adds stronger desktop diagnostics so setup and troubleshooting are easier from inside OpenWork.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 5th" tags={["🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.133](https://github.com/different-ai/openwork/compare/v0.11.132...v0.11.133)
|
||||
|
||||
Stabilizes active chat rendering so transcripts stop flickering while typing and long-message state holds together more reliably.
|
||||
|
||||
## [v0.11.132](https://github.com/different-ai/openwork/compare/v0.11.131...v0.11.132)
|
||||
|
||||
Makes session startup feel steadier by preserving empty-draft launches, opening chats at the latest messages, and reducing long-chat typing lag.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 4th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.131](https://github.com/different-ai/openwork/compare/v0.11.130...v0.11.131)
|
||||
|
||||
- Virtualized session message rendering and fixed blank transcript regressions so long conversations stay responsive.
|
||||
- Added a unified status indicator with detail popover plus automatic context compaction controls for clearer session oversight.
|
||||
- Added persistent language selection and improved file-open reliability for editor and artifact flows.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 2nd" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.130](https://github.com/different-ai/openwork/compare/v0.11.129...v0.11.130)
|
||||
|
||||
Makes local connectivity more dependable by hardening router startup, adding restart controls, and smoothing checkout return handling in billing.
|
||||
|
||||
## [v0.11.129](https://github.com/different-ai/openwork/compare/v0.11.128...v0.11.129)
|
||||
|
||||
Adds self-serve billing controls in the web cloud dashboard and expands messaging connectors with first-class media delivery.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="March 1st" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.128](https://github.com/different-ai/openwork/compare/v0.11.127...v0.11.128)
|
||||
|
||||
Expands remote file workflows with just-in-time file sessions and local mirror support, then makes long desktop sessions easier to read and follow.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="February 28th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.127](https://github.com/different-ai/openwork/compare/v0.11.126...v0.11.127)
|
||||
|
||||
Makes worker recovery clearer and more reliable by adding a plain-language recovery action that keeps existing OpenWork access working.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="February 27th" tags={["🚀 New Features", "🏗️ Refactoring"]}>
|
||||
|
||||
## [v0.11.126](https://github.com/different-ai/openwork/compare/v0.11.125...v0.11.126)
|
||||
|
||||
Simplifies artifact handling first, then adds quicker worker and plugin actions so common workspace management tasks take fewer steps.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="February 26th" tags={["🐛 Bug Fixes", "🚀 New Features"]}>
|
||||
|
||||
## [v0.11.125](https://github.com/different-ai/openwork/compare/v0.11.124...v0.11.125)
|
||||
|
||||
Makes navigation more consistent across dashboard and session views and prevents large downloads from freezing the UI.
|
||||
|
||||
## [v0.11.124](https://github.com/different-ai/openwork/compare/v0.11.123...v0.11.124)
|
||||
|
||||
Applies the Orbita session layout direction to make the core OpenWork session view feel more structured, readable, and cohesive.
|
||||
|
||||
## [v0.11.123](https://github.com/different-ai/openwork/compare/v0.11.122...v0.11.123)
|
||||
|
||||
Refreshes sharing to match OpenWork’s visual identity and adds a built-in local server restart action for easier recovery.
|
||||
|
||||
## [v0.11.122](https://github.com/different-ai/openwork/compare/v0.11.121...v0.11.122)
|
||||
|
||||
- Streamlined cloud onboarding with Open in App handoff, GitHub sign-in, a dedicated download page, and stronger hosted auth and callback handling.
|
||||
- Added richer sharing flows with workspace profile and skills-set sharing plus deep-linked bundle imports into new workers.
|
||||
- Improved day-to-day app usability with grouped exploration steps, faster markdown rendering in long sessions, clearer workspace and share surfaces, and better file-link handling.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="February 23rd" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.121](https://github.com/different-ai/openwork/compare/v0.11.120...v0.11.121)
|
||||
|
||||
Makes session timelines read more naturally and improves the speed of quick actions, search, and composing in active chats.
|
||||
|
||||
## [v0.11.120](https://github.com/different-ai/openwork/compare/v0.11.119...v0.11.120)
|
||||
|
||||
Stabilizes session switching across workers and refreshes the landing hero so the product is easier to navigate and read.
|
||||
|
||||
## [v0.11.119](https://github.com/different-ai/openwork/compare/v0.11.118...v0.11.119)
|
||||
|
||||
Keeps long chats more responsive and polishes the landing and hosted web surfaces for a cleaner first-run experience.
|
||||
|
||||
## [v0.11.118](https://github.com/different-ai/openwork/compare/v0.11.117...v0.11.118)
|
||||
|
||||
Makes long sessions feel faster and clearer while reducing technical noise in hosted worker controls.
|
||||
|
||||
## [v0.11.117](https://github.com/different-ai/openwork/compare/v0.11.116...v0.11.117)
|
||||
|
||||
Improves hosted worker management and session readability while hardening messaging and Den reliability in several user-visible failure paths.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="February 22nd" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.116](https://github.com/different-ai/openwork/compare/v0.11.115...v0.11.116)
|
||||
|
||||
Simplifies cloud-worker connection with a cleaner list-detail web flow and desktop deep links that open remote connects more directly.
|
||||
|
||||
## [v0.11.115](https://github.com/different-ai/openwork/compare/v0.11.114...v0.11.115)
|
||||
|
||||
Makes Telegram identity setup safer with private bot pairing codes and improves hosted auth recovery when the web proxy gets bad upstream responses.
|
||||
|
||||
## [v0.11.114](https://github.com/different-ai/openwork/compare/v0.11.113...v0.11.114)
|
||||
|
||||
- Added the Den control plane and web app so users can provision real cloud workers through a guided 3-step setup flow.
|
||||
- Made cloud workers easier to reconnect by persisting worker records, surfacing OpenWork connect credentials, and returning compatible workspace-scoped connect links.
|
||||
- Improved cloud reliability and access control with completed OAuth setup, asynchronous worker provisioning with auto-polling, and Polar-gated paid access.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="February 21st" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.113](https://github.com/different-ai/openwork/compare/v0.11.112...v0.11.113)
|
||||
|
||||
Speeds up session work with a new Cmd+K command palette for jumping between sessions and changing key chat settings in place.
|
||||
|
||||
## [v0.11.112](https://github.com/different-ai/openwork/compare/v0.11.111...v0.11.112)
|
||||
|
||||
Cleans up the session tool timeline by removing step lifecycle noise so active runs are easier to scan.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="February 20th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.111](https://github.com/different-ai/openwork/compare/v0.11.110...v0.11.111)
|
||||
|
||||
Ships synchronized version metadata only, with no distinct user-facing change evident in this release.
|
||||
|
||||
## [v0.11.110](https://github.com/different-ai/openwork/compare/v0.11.109...v0.11.110)
|
||||
|
||||
Improves release and deployment plumbing behind the scenes, with no clear new end-user product behavior in this patch.
|
||||
|
||||
## [v0.11.109](https://github.com/different-ai/openwork/compare/v0.11.108...v0.11.109)
|
||||
|
||||
Makes automation setup less confusing while expanding skill discovery and MCP configuration support for more flexible setups.
|
||||
|
||||
## [v0.11.108](https://github.com/different-ai/openwork/compare/v0.11.107...v0.11.108)
|
||||
|
||||
Adds readable share bundle pages first, then makes Soul enable flows sturdier and preserves unsent drafts across tab switches.
|
||||
|
||||
## [v0.11.107](https://github.com/different-ai/openwork/compare/v0.11.106...v0.11.107)
|
||||
|
||||
Stops sessions from repeatedly snapping back to the top, making long conversations easier to stay anchored in.
|
||||
|
||||
## [v0.11.106](https://github.com/different-ai/openwork/compare/v0.11.105...v0.11.106)
|
||||
|
||||
Refreshes release metadata only, with no clear user-facing product change in this patch.
|
||||
|
||||
## [v0.11.105](https://github.com/different-ai/openwork/compare/v0.11.104...v0.11.105)
|
||||
|
||||
Removes automatic session scroll following so the timeline stops fighting users who are reading older output.
|
||||
|
||||
## [v0.11.104](https://github.com/different-ai/openwork/compare/v0.11.103...v0.11.104)
|
||||
|
||||
Makes session follow-scroll user-controlled so reviewing earlier output is less likely to be interrupted.
|
||||
|
||||
## [v0.11.103](https://github.com/different-ai/openwork/compare/v0.11.102...v0.11.103)
|
||||
|
||||
- Prevented Soul template prompt-injection abuse so unsafe template content is less likely to steer users into unintended behavior.
|
||||
- Scoped sidebar synchronization to the active workspace root so switching between workspaces feels more predictable.
|
||||
- Kept the patch tightly focused on safety and multi-workspace consistency rather than adding new visible workflows.
|
||||
|
||||
## [v0.11.102](https://github.com/different-ai/openwork/compare/v0.11.101...v0.11.102)
|
||||
|
||||
Clarifies when migration recovery is available so troubleshooting local startup issues feels more predictable.
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="February 19th" tags={["🚀 New Features", "🐛 Bug Fixes"]}>
|
||||
|
||||
## [v0.11.101](https://github.com/different-ai/openwork/compare/v0.11.100...v0.11.101)
|
||||
|
||||
Improves local session recovery first, then makes Soul easier to steer and cleans up compact controls across key app surfaces.
|
||||
|
||||
## v0.11.100
|
||||
|
||||
Stops long prompts from disappearing while typing, making the session composer reliable again.
|
||||
|
||||
</Update>
|
||||
@@ -44,6 +44,12 @@
|
||||
"importing-a-skill"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Changelog",
|
||||
"pages": [
|
||||
"changelog"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Improve this doc",
|
||||
"pages": [
|
||||
|
||||
246
scripts/generate-changelog.mjs
Normal file
246
scripts/generate-changelog.mjs
Normal file
@@ -0,0 +1,246 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import fs from "node:fs/promises"
|
||||
import { resolve, dirname } from "node:path"
|
||||
import { fileURLToPath } from "node:url"
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||
const ROOT = resolve(__dirname, "..")
|
||||
const TRACKER_PATH = resolve(ROOT, "changelog/release-tracker.md")
|
||||
const OUTPUT_PATH = resolve(ROOT, "packages/docs/changelog.mdx")
|
||||
const COMPARE_BASE = "https://github.com/different-ai/openwork/compare"
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Helpers
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
const ORDINAL_RULES = new Map([
|
||||
[1, "st"], [2, "nd"], [3, "rd"],
|
||||
[21, "st"], [22, "nd"], [23, "rd"],
|
||||
[31, "st"],
|
||||
])
|
||||
|
||||
function ordinal(day) {
|
||||
return ORDINAL_RULES.get(day) || "th"
|
||||
}
|
||||
|
||||
const MONTHS = [
|
||||
"January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December",
|
||||
]
|
||||
|
||||
/** "2026-02-19T17:49:05Z" → "February 19th" */
|
||||
function formatDate(raw) {
|
||||
// Handle non-standard values like "Unreleased draft release. Tagged at `2026-03-22T09:29:16-07:00`."
|
||||
const isoMatch = raw.match(/(\d{4}-\d{2}-\d{2}T[\d:.Z+-]+)/)
|
||||
if (!isoMatch) return null
|
||||
|
||||
const d = new Date(isoMatch[1])
|
||||
if (isNaN(d.getTime())) return null
|
||||
|
||||
const month = MONTHS[d.getUTCMonth()]
|
||||
const day = d.getUTCDate()
|
||||
return `${month} ${day}${ordinal(day)}`
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an array of applicable tags for a release.
|
||||
*
|
||||
* Returns all categories that have count > 0.
|
||||
* If none apply, returns ["Misc"].
|
||||
*/
|
||||
function resolveTags(features, bugs, deprecated) {
|
||||
const tags = []
|
||||
if (features > 0) tags.push("🚀 New Features")
|
||||
if (bugs > 0) tags.push("🐛 Bug Fixes")
|
||||
if (deprecated > 0) tags.push("🏗️ Refactoring")
|
||||
return tags.length > 0 ? tags : ["🔧 Misc"]
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Parser
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Parse release-tracker.md into structured release objects.
|
||||
*
|
||||
* Splits on `## v` headings, then extracts `#### ` subsections inside each.
|
||||
*/
|
||||
function parseTracker(text) {
|
||||
// Split into release blocks. First element is the file header.
|
||||
const blocks = text.split(/^## /m).slice(1)
|
||||
|
||||
return blocks.map((block) => {
|
||||
const lines = block.split("\n")
|
||||
const versionLine = lines[0].trim() // e.g. "v0.11.100"
|
||||
const version = versionLine
|
||||
|
||||
// Extract subsections keyed by their #### title
|
||||
const sections = {}
|
||||
let currentKey = null
|
||||
for (let i = 1; i < lines.length; i++) {
|
||||
const line = lines[i]
|
||||
const heading = line.match(/^#### (.+)/)
|
||||
if (heading) {
|
||||
currentKey = heading[1].trim()
|
||||
sections[currentKey] = []
|
||||
} else if (currentKey !== null) {
|
||||
sections[currentKey].push(line)
|
||||
}
|
||||
}
|
||||
|
||||
// Trim and join each section's content
|
||||
for (const key of Object.keys(sections)) {
|
||||
sections[key] = sections[key].join("\n").trim()
|
||||
}
|
||||
|
||||
return { version, sections }
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Transform a parsed release into a changelog entry object.
|
||||
*
|
||||
* @param {object} release - parsed release block
|
||||
* @param {string|null} prevVersion - previous version string for compare URL
|
||||
*/
|
||||
function toEntry(release, prevVersion) {
|
||||
const s = release.sections
|
||||
|
||||
const releasedAt = s["Released at"]?.replace(/`/g, "").trim() || ""
|
||||
const date = releasedAt ? formatDate(releasedAt) : null
|
||||
|
||||
const importance = (s["Release importance"] || "").toLowerCase()
|
||||
const isMajor = importance.startsWith("major")
|
||||
|
||||
const oneLiner = s["One-line summary"]?.trim() || ""
|
||||
const mainChanges = s["Main changes"]?.trim() || ""
|
||||
|
||||
const features = parseInt(s["Number of major improvements"] || "0", 10)
|
||||
const bugs = parseInt(s["Number of major bugs resolved"] || "0", 10)
|
||||
const deprecated = parseInt(s["Number of deprecated features"] || "0", 10)
|
||||
|
||||
const tags = resolveTags(features, bugs, deprecated)
|
||||
|
||||
// Build compare URL from consecutive versions: v0.11.200...v0.11.201
|
||||
const compareUrl = prevVersion
|
||||
? `${COMPARE_BASE}/${prevVersion}...${release.version}`
|
||||
: ""
|
||||
|
||||
return {
|
||||
version: release.version,
|
||||
date,
|
||||
isMajor,
|
||||
tags,
|
||||
oneLiner,
|
||||
mainChanges,
|
||||
compareUrl,
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Renderer
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Render a single version block (used inside a grouped day).
|
||||
*/
|
||||
function renderVersionBlock(entry) {
|
||||
const lines = []
|
||||
|
||||
// Version as the section heading, linked to compare URL
|
||||
if (entry.compareUrl) {
|
||||
lines.push(` ## [${entry.version}](${entry.compareUrl})`)
|
||||
} else {
|
||||
lines.push(` ## ${entry.version}`)
|
||||
}
|
||||
|
||||
lines.push("")
|
||||
|
||||
// Body: major → bullet points, minor → one-liner
|
||||
if (entry.isMajor && entry.mainChanges) {
|
||||
const indented = entry.mainChanges
|
||||
.split("\n")
|
||||
.map((l) => ` ${l}`)
|
||||
.join("\n")
|
||||
lines.push(indented)
|
||||
} else {
|
||||
lines.push(` ${entry.oneLiner}`)
|
||||
}
|
||||
|
||||
return lines.join("\n")
|
||||
}
|
||||
|
||||
/**
|
||||
* Group entries by date and render each group as a single <Update>.
|
||||
* Tags are unioned across all entries in the day.
|
||||
* "🔧 Misc" is dropped if any real tag exists.
|
||||
*/
|
||||
function renderDayGroup(dayEntries) {
|
||||
// Union tags, dedup, drop Misc if real tags exist
|
||||
const allTags = [...new Set(dayEntries.flatMap((e) => e.tags))]
|
||||
const filtered = allTags.filter((t) => t !== "🔧 Misc")
|
||||
const tags = filtered.length > 0 ? filtered : ["🔧 Misc"]
|
||||
|
||||
const tagsJsx = tags.map((t) => `"${t}"`).join(", ")
|
||||
const date = dayEntries[0].date
|
||||
|
||||
const lines = []
|
||||
lines.push(`<Update label="${date}" tags={[${tagsJsx}]}>`)
|
||||
|
||||
for (const entry of dayEntries) {
|
||||
lines.push("")
|
||||
lines.push(renderVersionBlock(entry))
|
||||
}
|
||||
|
||||
lines.push("")
|
||||
lines.push("</Update>")
|
||||
|
||||
return lines.join("\n")
|
||||
}
|
||||
|
||||
function renderChangelog(entries) {
|
||||
const header = [
|
||||
"---",
|
||||
'title: "Changelog"',
|
||||
"---",
|
||||
"",
|
||||
].join("\n")
|
||||
|
||||
// Filter, reverse (newest first), then group by date
|
||||
const valid = entries.filter((e) => e.date !== null).reverse()
|
||||
const grouped = []
|
||||
for (const entry of valid) {
|
||||
const last = grouped[grouped.length - 1]
|
||||
if (last && last[0].date === entry.date) {
|
||||
last.push(entry)
|
||||
} else {
|
||||
grouped.push([entry])
|
||||
}
|
||||
}
|
||||
|
||||
const body = grouped
|
||||
.map(renderDayGroup)
|
||||
.join("\n\n")
|
||||
|
||||
return header + body + "\n"
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Main
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
async function main() {
|
||||
const raw = await fs.readFile(TRACKER_PATH, "utf-8")
|
||||
const releases = parseTracker(raw)
|
||||
const entries = releases.map((r, i) => toEntry(r, i > 0 ? releases[i - 1].version : null))
|
||||
const output = renderChangelog(entries)
|
||||
|
||||
await fs.writeFile(OUTPUT_PATH, output, "utf-8")
|
||||
console.log(`Wrote ${entries.length} entries to ${OUTPUT_PATH}`)
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
console.error(err)
|
||||
process.exit(1)
|
||||
})
|
||||
Reference in New Issue
Block a user