123 lines
6.3 KiB
Markdown
123 lines
6.3 KiB
Markdown
# Changelog
|
|
|
|
## 0.7.1
|
|
|
|
fix: a page in the dark color scheme, also one in an iframe, is no longer white while it loads,
|
|
and test-container.mjs runs the checks with Docker.
|
|
|
|
- The `colorScheme()` plugin of `/vite` sets the color scheme of `appTheme` and the dark background
|
|
on the page before its first paint; an application adds it to the plugins of its
|
|
`vite.config.ts`.
|
|
- `./test-container.mjs` runs the typecheck, the lint, the package build and the tests in a
|
|
container, on the engine of the docker CLI's context, with a scratch PostgreSQL;
|
|
`--package <folder>` writes the packed toolkit to the folder.
|
|
|
|
## 0.7.0
|
|
|
|
feature: every write of an instance's variable files is kept as a revision with the schema version
|
|
of their layout and the application that wrote them.
|
|
|
|
- `tf_variable_revisions` keeps all files of an instance after each write, with `schema`, null when
|
|
not known, `producer` and `saved`; revisions are numbered from 1 for each instance and kept until
|
|
removed by hand.
|
|
- `write(version, contents, meta)` and `remove(version, name, meta)` take `meta`, `{ schema,
|
|
producer }`, and record the revision in the same transaction; a write of no file records none.
|
|
- `read()` answers the newest revision as `revision`; `revisions()` lists them, newest first, and
|
|
`revision(n)` answers one with its files. `TfvarsRevision` is exported from `/server` and
|
|
`/shared`.
|
|
- The files of an instance without revisions become its revision 1, of the producer `unknown` and
|
|
no schema.
|
|
- The README describes the SQL that purges some or all revisions of a module's instance.
|
|
|
|
## 0.6.0-2
|
|
|
|
fix: release.mjs reads a summary wrapped over several lines.
|
|
|
|
- `release.mjs` takes the summary of the newest entry as the paragraph after its heading and joins
|
|
its lines with single spaces into the commit message.
|
|
|
|
## 0.6.0
|
|
|
|
feature: RowDialog validates a row as part of a larger value, such as a whole document with the row put in.
|
|
|
|
- `RowDialog` takes `body`, the value posted to `validatePath` for the row, and `select`, the
|
|
row's problems by field and message taken from the answer.
|
|
- `useValidation` and `RowDialog` take an answer of any shape.
|
|
|
|
## 0.5.0
|
|
|
|
feature: the entry point /shared exports the types and constants a server and its web application share.
|
|
|
|
- `@koszewscy/sk-react-toolkit/shared` exports the credential types, `TfModule`, `TfInstance`,
|
|
`TfvarsFileStatus` and the name patterns of the tfvars store, for the API types of an
|
|
application imported by both its server and its web application.
|
|
|
|
## 0.4.0
|
|
|
|
feature: the tfvars store keeps Terraform modules, their instances and the instances' variable files in PostgreSQL.
|
|
|
|
- `createTfvarsStore(pool)`: the tables `tf_modules`, `tf_instances` and `tf_variable_files`,
|
|
created at the first use, with `modules` (`list`, `put`, `delete`), `instances` (`list`,
|
|
`create`, `delete`) and `variables(module, instance)` (`read`, `write`, `remove`), whose writes
|
|
take the version read and answer `false` when the files changed since.
|
|
- `versionOf`, `tfvarsText`, and the types `TfModule`, `TfInstance` and `TfvarsFileStatus` with
|
|
the patterns of their names, also exported from `/web`.
|
|
- `pg` is an optional peer dependency, for the store.
|
|
- `npm test` tests the store against a scratch database of the server the `PG*` variables name.
|
|
|
|
## 0.3.0
|
|
|
|
feature: the key of a credential store may be a path of keys, so stores of several kinds share one object of config.json.
|
|
|
|
- `CredentialStore.key` is a key of `config.json` or a path of keys separated by dots, such as
|
|
`connections.pg`; read, validate, write and `credentialValues` use the list at that path, and a
|
|
write creates the objects of the path that are missing and keeps their other keys.
|
|
|
|
## 0.2.1
|
|
|
|
fix: a credential store holds credentials of one kind, without a kind field in its entries, and the dialog edits several stores in tabs.
|
|
|
|
- A `CredentialStore` has one `kind`, and its entries hold the name and the fields of that kind
|
|
only; `kind` is no longer a field of an entry, of `CredentialProfile`, or of `CredentialKind`. The
|
|
read answer has the store's `kind` in place of `kinds`.
|
|
- `CredentialsButton` takes `stores`, the prefixes and labels of the stores of the same
|
|
`config.json`, with a tab for each when there are several; Save writes each store that changed.
|
|
The message of an empty store is centered in the dialog, and the kind's label keeps its case.
|
|
- The README's Using it shows the `dev-link` script of the applications, `npm link --no-save` in
|
|
both their packages, in place of the two commands.
|
|
|
|
## 0.2.0
|
|
|
|
feature: the credential store keeps credentials of any kind in config.json with encrypted secrets, with its routes and its dialog.
|
|
|
|
- `encryptionKey`, `encrypt` and `decrypt`: AES-256-GCM with the SHA-256 of `ENCRYPTION_KEY` or of
|
|
the content of `ENCRYPTION_KEY_FILE`.
|
|
- `CredentialStore`, `credentialProblems`, `credentialValues` and `registerCredentialRoutes`: a
|
|
list of credentials in a key of `config.json`, of the kinds the application gives, with routes
|
|
to read, validate and write it; secrets are encrypted and never answered.
|
|
- `POSTGRESQL_KIND`, the kind of a PostgreSQL connection.
|
|
- `CredentialsButton`, the dialog that edits a store, its fields rendered from the kinds.
|
|
|
|
## 0.1.1
|
|
|
|
fix: the declarations of the published package import the other declarations by their .js names.
|
|
|
|
- The `.d.ts` files of the package name the files they import as `.js`, as the compiled
|
|
JavaScript does, instead of the `.ts` and `.tsx` files of the source, which the package does not
|
|
hold.
|
|
|
|
## 0.1.0
|
|
|
|
feature: sk-react-toolkit holds the server helpers, web components and Vite font plugin shared by manage-ui and sql-query-webui.
|
|
|
|
- `sk-react-toolkit/server`: `HttpError`, `strict`, the error and not-found handlers, the log,
|
|
`fail`, `gitVersion`, `exitOnSignals` and `readJsonObject`.
|
|
- `sk-react-toolkit/web`: `request` and `ApiError`, the theme and `renderApp`, the font styles,
|
|
`Card`, `ThemeMenu`, `SwitcherMenu`, `TextInput`, `RowDialog`, `useValidation` and
|
|
`createBrowserSettings`.
|
|
- `sk-react-toolkit/vite`: the `VITE_FONT` font plugin and the resolve options that keep one copy
|
|
of React, MUI and Emotion.
|
|
- `npm run build` builds the published package, `@koszewscy/sk-react-toolkit`, compiled to
|
|
JavaScript with declarations, in `dist/`. The `Release` workflow of Gitea Actions checks, builds
|
|
and publishes each tag to the Gitea npm registry, skipping a version already published.
|