Version Packages - #2003
Merged
Merged
Conversation
@tailor-platform/create-sdk
@tailor-platform/eslint-plugin-sdk
@tailor-platform/sdk
@tailor-platform/sdk-plugin-seed
@tailor-platform/sdk-plugin-tailordb-erd
commit: |
This comment has been minimized.
This comment has been minimized.
tailor-platform-pr-trigger
Bot
force-pushed
the
changeset-release/main
branch
from
August 6, 2026 08:50
c2ed1b2 to
0d0e445
Compare
This comment has been minimized.
This comment has been minimized.
tailor-platform-pr-trigger
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
August 7, 2026 00:54
aa83725 to
dc58645
Compare
This comment has been minimized.
This comment has been minimized.
tailor-platform-pr-trigger
Bot
force-pushed
the
changeset-release/main
branch
from
August 7, 2026 01:25
dc58645 to
0190102
Compare
This comment has been minimized.
This comment has been minimized.
tailor-platform-pr-trigger
Bot
force-pushed
the
changeset-release/main
branch
from
August 7, 2026 03:27
0190102 to
55deaf8
Compare
This comment has been minimized.
This comment has been minimized.
tailor-platform-pr-trigger
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
August 7, 2026 12:48
23c63e6 to
42d4972
Compare
This comment has been minimized.
This comment has been minimized.
tailor-platform-pr-trigger
Bot
force-pushed
the
changeset-release/main
branch
from
August 7, 2026 13:24
42d4972 to
e6ea29d
Compare
This comment has been minimized.
This comment has been minimized.
tailor-platform-pr-trigger
Bot
force-pushed
the
changeset-release/main
branch
from
August 7, 2026 13:58
e6ea29d to
0c8c390
Compare
tailor-platform-pr-trigger
Bot
force-pushed
the
changeset-release/main
branch
from
August 7, 2026 14:00
0c8c390 to
8429327
Compare
Code Metrics Report (packages/sdk)
Details | | main (df07ebe) | #2003 (c107326) | +/- |
|--------------------|----------------|-----------------|------|
| Coverage | 78.9% | 78.9% | 0.0% |
| Files | 471 | 471 | 0 |
| Lines | 18590 | 18590 | 0 |
| Covered | 14671 | 14671 | 0 |
| Code to Test Ratio | 1:0.4 | 1:0.4 | 0.0 |
| Code | 133778 | 133778 | 0 |
| Test | 65829 | 65829 | 0 |SDK Configure Bundle Size
Runtime Performance
Type Performance (instantiations)
Reported by octocov |
toiroakr
approved these changes
Aug 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@tailor-platform/create-sdk@2.2.0
Minor Changes
#1975
b5ca25bThanks @toiroakr! - Addtailor seed fillto fill in the values a record gets on create for the JSONL seed data rows that are missing them. It fillsidby default, so rows can reference each other by id, and--fieldsnames any other create-time field:The values come from the type itself — its
id, its field defaults, its create hooks — applied to each row on its own. Nothing is validated, so a row can be filled while a required field is still missing or while another file references an id that does not exist yet; that is the point, since the ids are what you need in order to write the rows that reference them. Runtailor seed validatewhen the data is ready.Only the named fields are written, and only into a row that has no value for them, so a value already in the file is never replaced. A line that gains nothing is left byte for byte as it was; a line that takes a value is written with its keys in the order the type declares its fields, so a filled-in
idlands at the front. A field the type gives no value to is skipped, so--fields idcovers a whole data directory and leaves the IdP_Userdata alone, and naming a field the platform assigns — aserialfield, for instance — fills nothing and says so.tailor seed apply --upsertnow points at the command when a row has noid, since that is the run it blocks, and newly scaffolded projects get aseed:fillscript next toseed:validate.The generated seed schema files now export the type's create hook, which is where the values come from. Run
tailor generateafter upgrading; until thentailor seed fillreports which file needs regenerating.createTailorDBHookfrom@tailor-platform/sdk/testno longer runs the type's ownvalidate. Computing the values a record gets on create and deciding whether a record is acceptable are separate jobs, and the second one now sits where the field-level validation already was:createStandardSchematakes the type as a third argument and reports type-level issues through its result.tailor seed validatealso stops printing two markers on the header of a failed run (\u2716 \u2717 Found 2 error(s) in ...), now that it hands the CLI a report that is already formatted.That also fixes how
tailor seed validatereports them. A type-levelvalidatefailure used to end the run at the first offending row with a bare message; it now lands in the same report as every other issue, naming the file and every row that fails.A test calling
createTailorDBHookdirectly to assert a type-levelvalidatethrows needs to go throughcreateStandardSchemainstead.The same operation is available as
fillSeedDatafrom@tailor-platform/sdk/seed.Patch Changes
#2008
f2135abThanks @toiroakr! - Consistently call a TailorDB schema definition a "table" instead of a "type" across the docs, matching thedb.type()→db.table()rename. Also fix three leftoverdb.type(...)code samples indocs/services/tailordb.mdthat should have readdb.table(...).Update the
v2/idp-publish-events-renamecodemod registry description to say "tables" instead of "types", matching the same wording fix.@tailor-platform/sdk@2.2.0
Minor Changes
#1992
6e67451Thanks @dqn! - TailorDB migration scripts can now be unit-tested before deploying:db.tsexports theDatabaseinterface, socreateKyselyMock<Database>()from@tailor-platform/sdk/vitesttypes queries against the migration's schema state.tailor tailordb migration script <number> --with-testscaffolds a ready-to-fillmigrate.test.tsnext to the migration script. Whenmigrate.tsalready exists (e.g. auto-generated for a breaking change), the flag adds only the test file.createKyselyPGlite<Database>(new PGlite())from@tailor-platform/sdk/vitestruns a migration script against an in-memory Postgres (@electric-sql/pglite, installed separately) to verify what it does to real rows.#1975
b5ca25bThanks @toiroakr! - Addtailor seed fillto fill in the values a record gets on create for the JSONL seed data rows that are missing them. It fillsidby default, so rows can reference each other by id, and--fieldsnames any other create-time field:The values come from the type itself — its
id, its field defaults, its create hooks — applied to each row on its own. Nothing is validated, so a row can be filled while a required field is still missing or while another file references an id that does not exist yet; that is the point, since the ids are what you need in order to write the rows that reference them. Runtailor seed validatewhen the data is ready.Only the named fields are written, and only into a row that has no value for them, so a value already in the file is never replaced. A line that gains nothing is left byte for byte as it was; a line that takes a value is written with its keys in the order the type declares its fields, so a filled-in
idlands at the front. A field the type gives no value to is skipped, so--fields idcovers a whole data directory and leaves the IdP_Userdata alone, and naming a field the platform assigns — aserialfield, for instance — fills nothing and says so.tailor seed apply --upsertnow points at the command when a row has noid, since that is the run it blocks, and newly scaffolded projects get aseed:fillscript next toseed:validate.The generated seed schema files now export the type's create hook, which is where the values come from. Run
tailor generateafter upgrading; until thentailor seed fillreports which file needs regenerating.createTailorDBHookfrom@tailor-platform/sdk/testno longer runs the type's ownvalidate. Computing the values a record gets on create and deciding whether a record is acceptable are separate jobs, and the second one now sits where the field-level validation already was:createStandardSchematakes the type as a third argument and reports type-level issues through its result.tailor seed validatealso stops printing two markers on the header of a failed run (\u2716 \u2717 Found 2 error(s) in ...), now that it hands the CLI a report that is already formatted.That also fixes how
tailor seed validatereports them. A type-levelvalidatefailure used to end the run at the first offending row with a bare message; it now lands in the same report as every other issue, naming the file and every row that fails.A test calling
createTailorDBHookdirectly to assert a type-levelvalidatethrows needs to go throughcreateStandardSchemainstead.The same operation is available as
fillSeedDatafrom@tailor-platform/sdk/seed.#1979
07c50a6Thanks @toiroakr! - AddTailorDBColumns/TailorDBInsertable/TailorDBSelectable/TailorDBUpdateableto@tailor-platform/sdk/kysely. They accept either a table (typeof myTable) or a bare field collection, so code that is generic over the fields can derive create/read/update inputs the same way the generated table types do:.serial()fields are never caller-supplied,.default()and.hooks({ create })fields may be omitted on create, optional fields stay optional, andidis generated.IsReadOnlyDBFieldandIsAutoFilledDBFieldare also exported from@tailor-platform/sdkfor asking whether callers can never write a single field, or may omit it on create.Supplying a value for a
.serial()column now fails with the reason instead of'<column>' does not exist in type ..., which read as a typo:This applies to the tables
kyselyTypePlugingenerates as well, because it comes fromSerial. A serial column is now an omittable key onInsertable/Updateablerather than an absent one, sokeyof Insertable<Table<"MyType">>includes it, and copying a whole record into a create input ({ ...row }) now reports the serial column instead of silently dropping it. Assigning the same values as before still compiles, and passingundefinedis equivalent to omitting the column.Insertable,SelectableandUpdateablefrom the generatedNamespacealso print as a flat object rather than an intersection, so assignability errors name the shape directly.TailorDBFieldgains an optional third type parameter carrying a nested object's own fields, sodb.object({ at: db.datetime() })keeps that shape through the builder chain. Without it a date or datetime nested in an object resolved tostring | Date(orstring) while the runtime hands back aDate. WritingTailorDBField<Defined, Output>still works.#1988
f45ed5bThanks @dqn! - Addtailor tailordb migration testto rehearse pending migrations in an isolated workspace. The command can load generated seed fixtures or clone source TailorDB records, run the real migration phases, optionally execute a Kysely assertion script, and deletes workspaces it creates unless--keepis passed.#1984
2f8457dThanks @dqn! - Add--stricttotailordb migration validate: validation additionally fails when a migration not yet applied to the remote has data-loss warnings (e.g. a removed field or type) but neither amigrate.tsnor a recorded--no-scriptacknowledgment. The failure names the affected type and field and prints the exact command to record the acknowledgment, so CI can require destructive changes to be explicitly acknowledged before merge.To support this,
tailordb migration script <number> --no-script --reason "..."now accepts warning-tier migrations (previously it was rejected unless the migration required a script), andmigration generateoffers to record the reason interactively when it detects warnings. Additionally, runningmigration script <number>whenmigrate.tsalready exists now clears a stale--no-scriptacknowledgment fromdiff.jsoninstead of failing, resolving the previously unclearable state after hand-adding a script.diff.jsonfiles written before data-loss warnings existed now have their warnings reconstructed from the recorded field/type removals when loaded, sovalidate --strictand--no-scriptacknowledgments treat them the same as newly generated migrations.#1993
ecff3b2Thanks @dqn! - Add generated in-place TailorDB migrations for verified field type changes. Migration scripts normalize existing values while the previous field contract remains active, and the target type is applied in the post-migration phase. Generated scripts intentionally fail TypeScript checks until their normalization logic is reviewed.#1990
36715daThanks @dqn! - Add a safetailordb migration rebaselineworkflow, let checked deployments adopt the new baseline, keep migration history IDs aligned across recovery commands, and reject unsupported migration file formats with upgrade guidancePatch Changes
#1960
50743adThanks @toiroakr! - Resolve thetailor,tailor-seed, andtailor-tailordb-erdexecutables through committed compile-cache launchers. Thetailor seedcommand is now available as soon as the plugin is installed, and the seed and ERD plugin CLIs reuse Node's on-disk compile cache for faster warm starts.#1934
2a3ec7bThanks @toiroakr! - Drop thechalkdependency in favor of Node's built-in styling, and decide color support per output stream. Diagnostics on stderr now keep their colors when you redirect stdout (tailor executor list > out.txt), and stop writing escape codes into the file when you redirect stderr (tailor deploy 2> log.txt).NO_COLOR,FORCE_COLORand non-TTY detection keep working as before.@tailor-platform/sdk-codemod,@tailor-platform/sdk-plugin-seedand@tailor-platform/sdk-plugin-tailordb-erdnow declare the Node and Bun versions they need (node >=22.15.0,bun >=1.2.0), matching@tailor-platform/sdk. Installing them on an older runtime reports the mismatch instead of failing once the CLI runs.#1985
ab23d97Thanks @dqn! - Copyable migration-script hint commands — frommigration generate,migration validate --strict, and deploy's missing-script error — are now rendered by one shell-aware formatter. Values are quoted for the platform shell, and on Windows a value containing%,$, or!(which cmd.exe/PowerShell expand even inside double quotes) switches the hint to an argv rendering instead of a command line that would resolve to a different path. The deploy hint now also pads the migration number, binds--configwith the=form, and omits it for the default config path.#1999
4364357Thanks @renovate! - fix(deps): update dependency globals to v17.9.0#1994
7e804d4Thanks @dqn! - Maketailor tailordb migration validatereject generated field type normalization scaffolds until their review marker is removed.#2008
f2135abThanks @toiroakr! - Consistently call a TailorDB schema definition a "table" instead of a "type" across the docs, matching thedb.type()→db.table()rename. Also fix three leftoverdb.type(...)code samples indocs/services/tailordb.mdthat should have readdb.table(...).Update the
v2/idp-publish-events-renamecodemod registry description to say "tables" instead of "types", matching the same wording fix.@tailor-platform/sdk-plugin-seed@0.2.0
Minor Changes
#1975
b5ca25bThanks @toiroakr! - Addtailor seed fillto fill in the values a record gets on create for the JSONL seed data rows that are missing them. It fillsidby default, so rows can reference each other by id, and--fieldsnames any other create-time field:The values come from the type itself — its
id, its field defaults, its create hooks — applied to each row on its own. Nothing is validated, so a row can be filled while a required field is still missing or while another file references an id that does not exist yet; that is the point, since the ids are what you need in order to write the rows that reference them. Runtailor seed validatewhen the data is ready.Only the named fields are written, and only into a row that has no value for them, so a value already in the file is never replaced. A line that gains nothing is left byte for byte as it was; a line that takes a value is written with its keys in the order the type declares its fields, so a filled-in
idlands at the front. A field the type gives no value to is skipped, so--fields idcovers a whole data directory and leaves the IdP_Userdata alone, and naming a field the platform assigns — aserialfield, for instance — fills nothing and says so.tailor seed apply --upsertnow points at the command when a row has noid, since that is the run it blocks, and newly scaffolded projects get aseed:fillscript next toseed:validate.The generated seed schema files now export the type's create hook, which is where the values come from. Run
tailor generateafter upgrading; until thentailor seed fillreports which file needs regenerating.createTailorDBHookfrom@tailor-platform/sdk/testno longer runs the type's ownvalidate. Computing the values a record gets on create and deciding whether a record is acceptable are separate jobs, and the second one now sits where the field-level validation already was:createStandardSchematakes the type as a third argument and reports type-level issues through its result.tailor seed validatealso stops printing two markers on the header of a failed run (\u2716 \u2717 Found 2 error(s) in ...), now that it hands the CLI a report that is already formatted.That also fixes how
tailor seed validatereports them. A type-levelvalidatefailure used to end the run at the first offending row with a bare message; it now lands in the same report as every other issue, naming the file and every row that fails.A test calling
createTailorDBHookdirectly to assert a type-levelvalidatethrows needs to go throughcreateStandardSchemainstead.The same operation is available as
fillSeedDatafrom@tailor-platform/sdk/seed.Patch Changes
#1960
50743adThanks @toiroakr! - Resolve thetailor,tailor-seed, andtailor-tailordb-erdexecutables through committed compile-cache launchers. Thetailor seedcommand is now available as soon as the plugin is installed, and the seed and ERD plugin CLIs reuse Node's on-disk compile cache for faster warm starts.#1934
2a3ec7bThanks @toiroakr! - Drop thechalkdependency in favor of Node's built-in styling, and decide color support per output stream. Diagnostics on stderr now keep their colors when you redirect stdout (tailor executor list > out.txt), and stop writing escape codes into the file when you redirect stderr (tailor deploy 2> log.txt).NO_COLOR,FORCE_COLORand non-TTY detection keep working as before.@tailor-platform/sdk-codemod,@tailor-platform/sdk-plugin-seedand@tailor-platform/sdk-plugin-tailordb-erdnow declare the Node and Bun versions they need (node >=22.15.0,bun >=1.2.0), matching@tailor-platform/sdk. Installing them on an older runtime reports the mismatch instead of failing once the CLI runs.#2008
f2135abThanks @toiroakr! - Consistently call a TailorDB schema definition a "table" instead of a "type" across the docs, matching thedb.type()→db.table()rename. Also fix three leftoverdb.type(...)code samples indocs/services/tailordb.mdthat should have readdb.table(...).Update the
v2/idp-publish-events-renamecodemod registry description to say "tables" instead of "types", matching the same wording fix.Updated dependencies [
50743ad,2a3ec7b,ab23d97,6e67451,4364357,b5ca25b,07c50a6,7e804d4,f45ed5b,2f8457d,ecff3b2,36715da,f2135ab]:@tailor-platform/eslint-plugin-sdk@0.2.1
Patch Changes
d512707Thanks @dqn! - Keep exported rule names and plugin types aligned with the published lint rules.@tailor-platform/sdk-codemod@0.4.2
Patch Changes
#1934
2a3ec7bThanks @toiroakr! - Drop thechalkdependency in favor of Node's built-in styling, and decide color support per output stream. Diagnostics on stderr now keep their colors when you redirect stdout (tailor executor list > out.txt), and stop writing escape codes into the file when you redirect stderr (tailor deploy 2> log.txt).NO_COLOR,FORCE_COLORand non-TTY detection keep working as before.@tailor-platform/sdk-codemod,@tailor-platform/sdk-plugin-seedand@tailor-platform/sdk-plugin-tailordb-erdnow declare the Node and Bun versions they need (node >=22.15.0,bun >=1.2.0), matching@tailor-platform/sdk. Installing them on an older runtime reports the mismatch instead of failing once the CLI runs.#2008
f2135abThanks @toiroakr! - Consistently call a TailorDB schema definition a "table" instead of a "type" across the docs, matching thedb.type()→db.table()rename. Also fix three leftoverdb.type(...)code samples indocs/services/tailordb.mdthat should have readdb.table(...).Update the
v2/idp-publish-events-renamecodemod registry description to say "tables" instead of "types", matching the same wording fix.@tailor-platform/sdk-plugin-tailordb-erd@0.1.2
Patch Changes
#1960
50743adThanks @toiroakr! - Resolve thetailor,tailor-seed, andtailor-tailordb-erdexecutables through committed compile-cache launchers. Thetailor seedcommand is now available as soon as the plugin is installed, and the seed and ERD plugin CLIs reuse Node's on-disk compile cache for faster warm starts.#1934
2a3ec7bThanks @toiroakr! - Drop thechalkdependency in favor of Node's built-in styling, and decide color support per output stream. Diagnostics on stderr now keep their colors when you redirect stdout (tailor executor list > out.txt), and stop writing escape codes into the file when you redirect stderr (tailor deploy 2> log.txt).NO_COLOR,FORCE_COLORand non-TTY detection keep working as before.@tailor-platform/sdk-codemod,@tailor-platform/sdk-plugin-seedand@tailor-platform/sdk-plugin-tailordb-erdnow declare the Node and Bun versions they need (node >=22.15.0,bun >=1.2.0), matching@tailor-platform/sdk. Installing them on an older runtime reports the mismatch instead of failing once the CLI runs.Updated dependencies [
50743ad,2a3ec7b,ab23d97,6e67451,4364357,b5ca25b,07c50a6,7e804d4,f45ed5b,2f8457d,ecff3b2,36715da,f2135ab]: