mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-30 07:05:24 +00:00
feat: add a plugin sdk changelog and tag sdk releases, release 1.0.2
This commit is contained in:
1 parent
ea678c5602
commit
64eafa0032
7 files changed
+113
-35
No files matched your search
@@ -0,0 +1,54 @@
|
||||
# Changelog
|
||||
|
||||
## 1.0.2
|
||||
|
||||
### Added
|
||||
|
||||
- `features` manifest field: up to 20 short lines about what the plugin does, shown on its page. `pluginFeatures()` reads them
|
||||
|
||||
### Changed
|
||||
|
||||
- `parseChangelog()` and `validateChangelog()` flag a `## Unreleased` section. Notes go under the version they ship in
|
||||
|
||||
### Removed
|
||||
|
||||
- `Changelog.unreleased`
|
||||
|
||||
## 1.0.1
|
||||
|
||||
### Added
|
||||
|
||||
- Plugin API 1.1
|
||||
- `app.registerOnboardingStep()` adds a step to onboarding, with `OnboardingStepProps` and `OnboardingStepContribution`. Needs `engine.api` 1.1
|
||||
- `video` manifest field: a YouTube link shown at the top of the plugin's page, read with `youtubeVideoId()`
|
||||
- `@termix-ssh/plugin-sdk/changelog` parses and checks a plugin's `CHANGELOG.md`
|
||||
- `termix-plugin changelog` prints one version's notes from `CHANGELOG.md`
|
||||
- `termix-plugin dev` installs a plugin on a running server and reinstalls it on every change. Needs developer mode and an admin API key
|
||||
- `renderOnboardingStep()` and `registered.onboardingSteps()` in `renderWithApp()`
|
||||
- `AddButton`, `FormFooter`, `ListRow`, `ListRowAction`, `ListRowFolder`, `ListBadge` and `PanelList` in `@termix-ssh/plugin-sdk/ui`
|
||||
- `PanelSearch` takes `disabled`, `title`, `onEnter` and `inputRef`, and `SurfaceScope` takes `onClose`
|
||||
|
||||
### Changed
|
||||
|
||||
- Release notes moved from `CHANGELOG.json` to `CHANGELOG.md`, which `pack` now ships. `validate` flags a leftover `CHANGELOG.json`
|
||||
- `ConnectionScreen` dropped `errorMessage` and `retryLabel` and gained `onClose`. `ConnectionLogPanel` dropped `position`
|
||||
- Plugin tests run in worker threads, since forked workers crash now and then on Windows
|
||||
- The test setup stubs `ResizeObserver` for Radix controls under jsdom
|
||||
- `onboarding` is a reserved plugin id
|
||||
|
||||
### Deprecated
|
||||
|
||||
- The `onboarding.*` action slots. Use `registerOnboardingStep()`
|
||||
|
||||
### Removed
|
||||
|
||||
- `schema/changelog.schema.json`
|
||||
|
||||
## 1.0.0
|
||||
|
||||
### Added
|
||||
|
||||
- Backend, frontend, database, manifest, capability and settings types for plugin API 1.0
|
||||
- Testing helpers and a Vitest preset for plugin tests
|
||||
- The `@termix-ssh/plugin-sdk/ui` component set
|
||||
- The `termix-plugin` CLI to build, validate, test, pack, sign and write migrations
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@termix-ssh/plugin-sdk",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.2",
|
||||
"description": "The contract between Termix core and a plugin: types, the capability catalog and the manifest schema.",
|
||||
"license": "Apache-2.0",
|
||||
"repository": {
|
||||
@@ -94,6 +94,7 @@
|
||||
"schema",
|
||||
"tsconfig.plugin.json",
|
||||
"README.md",
|
||||
"CHANGELOG.md",
|
||||
"client.d.ts"
|
||||
],
|
||||
"scripts": {
|
||||
|
||||
@@ -3,12 +3,7 @@
|
||||
*
|
||||
* # Changelog
|
||||
*
|
||||
* ## Unreleased
|
||||
*
|
||||
* ### Added
|
||||
* - Something merged but not shipped yet
|
||||
*
|
||||
* ## 1.1.0 - 2026-10-06
|
||||
* ## 1.1.0
|
||||
*
|
||||
* An optional summary paragraph.
|
||||
*
|
||||
@@ -19,7 +14,8 @@
|
||||
* - Something broken
|
||||
*
|
||||
* Releases are listed newest first, and the newest one has to be the
|
||||
* manifest version. The date is optional until the version ships.
|
||||
* manifest version. Notes go straight under the version they ship in, there
|
||||
* is no Unreleased section.
|
||||
*/
|
||||
|
||||
import semver from "semver";
|
||||
@@ -48,7 +44,6 @@ export interface ChangelogRelease {
|
||||
}
|
||||
|
||||
export interface Changelog {
|
||||
unreleased: ChangelogChange[];
|
||||
/** Newest first, as written. */
|
||||
releases: ChangelogRelease[];
|
||||
}
|
||||
@@ -135,7 +130,7 @@ export function parseChangelog(markdown: string): {
|
||||
problems: string[];
|
||||
} {
|
||||
const problems: string[] = [];
|
||||
const changelog: Changelog = { unreleased: [], releases: [] };
|
||||
const changelog: Changelog = { releases: [] };
|
||||
const lines = markdown.replace(/\r/g, "").split("\n");
|
||||
|
||||
type Block = { heading: string; line: number; body: string[] };
|
||||
@@ -151,12 +146,11 @@ export function parseChangelog(markdown: string): {
|
||||
});
|
||||
|
||||
const seen = new Set<string>();
|
||||
blocks.forEach((block, i) => {
|
||||
blocks.forEach((block) => {
|
||||
if (UNRELEASED_HEADING.test(block.heading)) {
|
||||
if (i !== 0) problems.push(`"## Unreleased" has to come first`);
|
||||
const notes = parseReleaseNotes(block.body.join("\n"), "Unreleased");
|
||||
problems.push(...notes.problems);
|
||||
changelog.unreleased = notes.changes;
|
||||
problems.push(
|
||||
`line ${block.line}: drop "## Unreleased", notes go under the version they ship in`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user