From 8fc462893f6bb5e4a6f3520274f6d47f123c9823 Mon Sep 17 00:00:00 2001 From: Michael McRae Date: Mon, 11 May 2026 16:05:19 +1000 Subject: [PATCH 01/12] before any license work --- .gitignore | 6 +++ .npmrc | 3 ++ CHANGELOG.md | 19 ++++++- package.json | 2 +- packages/library/LICENSE | 21 ++++++++ packages/library/package.json | 5 +- packages/library/test/tsconfig.json | 6 --- packages/library/tsconfig.json | 6 --- packages/tempo/CHANGELOG.md | 8 +++ packages/tempo/package.json | 4 +- .../plan/v3-architecture-discoverability.md | 51 +++++++++++++++++++ packages/tempo/src/tempo.class.ts | 13 ++++- 12 files changed, 126 insertions(+), 18 deletions(-) create mode 100644 .npmrc create mode 100644 packages/library/LICENSE create mode 100644 packages/tempo/plan/v3-architecture-discoverability.md diff --git a/.gitignore b/.gitignore index 10545088..716c6f45 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,9 @@ Thumbs.db **/.vitepress/cache/ **/.vitepress/dist/ **/doc/api/ + +# Secrets and credentials +.env +.env.* +.npmrc (global/local if they contain tokens) +! .npmrc (the one we created is safe as it uses variables) diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..d3816979 --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +# Authentication for npmjs +# Set this in your environment as NPM_TOKEN for CI/CD +//registry.npmjs.org/:_authToken=${NPM_TOKEN} diff --git a/CHANGELOG.md b/CHANGELOG.md index 23915e4a..d2e97dd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,24 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [2.10.0] - 2026-05-11 + +### Added +- **Licensing Architecture Preparation**: Initial work to support licensed plugins and features. + +### Changed +- **Term Collision Enforcement**: Term plugin registration now throws a fatal error on naming collisions (key/scope) to prevent silent configuration failures. + +## [2.9.3] - 2026-05-11 + +### Added +- **Fractional Resolution**: Numeric inputs now support fractional components with nanosecond precision using BigInt math. +- **Hardened AliasContext**: Improved chainable context for functional aliases with full API parity. +- **Epoch Support**: Enhanced detection for 9-10 digit Epoch timestamps. + +### Fixed +- **Mutation Safety**: Eliminated side-effects on global configuration during parsing. +- **Normalizer Memory**: Fixed state leakage in alias resolution. ## [2.8.0] - 2026-04-30 diff --git a/package.json b/package.json index 4ce43acd..7ff13032 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tempo-monorepo", - "version": "2.9.3", + "version": "2.10.0", "private": true, "description": "Magma Computing Monorepo", "repository": { diff --git a/packages/library/LICENSE b/packages/library/LICENSE new file mode 100644 index 00000000..dd7db2d9 --- /dev/null +++ b/packages/library/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Magma Computing + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/library/package.json b/packages/library/package.json index f930b597..23f07625 100644 --- a/packages/library/package.json +++ b/packages/library/package.json @@ -1,6 +1,6 @@ { "name": "@magmacomputing/library", - "version": "2.9.3", + "version": "2.10.0", "description": "Shared utility library for Tempo", "author": "Magma Computing Solutions", "license": "MIT", @@ -9,6 +9,9 @@ "url": "git+https://github.com/magmacomputing/magma.git", "directory": "packages/library" }, + "publishConfig": { + "access": "public" + }, "homepage": "https://github.com/magmacomputing/magma/tree/main/packages/library#readme", "bugs": { "url": "https://github.com/magmacomputing/magma/issues" diff --git a/packages/library/test/tsconfig.json b/packages/library/test/tsconfig.json index bb611650..84f58900 100644 --- a/packages/library/test/tsconfig.json +++ b/packages/library/test/tsconfig.json @@ -26,12 +26,6 @@ ], "#server/*": [ "../src/server/*" - ], - "#tempo": [ - "../../tempo/src/tempo.index.ts" - ], - "#tempo/*": [ - "../../tempo/src/*" ] } }, diff --git a/packages/library/tsconfig.json b/packages/library/tsconfig.json index 98488674..7c513882 100644 --- a/packages/library/tsconfig.json +++ b/packages/library/tsconfig.json @@ -24,12 +24,6 @@ ], "#server/*": [ "./src/server/*" - ], - "#tempo": [ - "../tempo/src/tempo.index.ts" - ], - "#tempo/*": [ - "../tempo/src/*" ] } }, diff --git a/packages/tempo/CHANGELOG.md b/packages/tempo/CHANGELOG.md index b133985d..27553c24 100644 --- a/packages/tempo/CHANGELOG.md +++ b/packages/tempo/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.10.0] - 2026-05-11 + +### Added +- **Licensing Architecture Preparation**: Initial work to support licensed plugins and features. + +### Changed +- **Term Collision Enforcement**: Term plugin registration now throws a fatal error on naming collisions (key/scope) to prevent silent configuration failures. + ## [2.9.3] - 2026-05-11 ### Added diff --git a/packages/tempo/package.json b/packages/tempo/package.json index c5a1f33e..f2521ddd 100644 --- a/packages/tempo/package.json +++ b/packages/tempo/package.json @@ -1,6 +1,6 @@ { "name": "@magmacomputing/tempo", - "version": "2.9.3", + "version": "2.10.0", "description": "The Tempo core library", "author": "Magma Computing Solutions", "license": "MIT", @@ -219,7 +219,7 @@ }, "devDependencies": { "@js-temporal/polyfill": "^0.5.1", - "@magmacomputing/library": "2.9.3", + "@magmacomputing/library": "2.10.0", "@rollup/plugin-alias": "^6.0.0", "magic-string": "^0.30.21", "typedoc": "^0.28.19", diff --git a/packages/tempo/plan/v3-architecture-discoverability.md b/packages/tempo/plan/v3-architecture-discoverability.md new file mode 100644 index 00000000..fea6c205 --- /dev/null +++ b/packages/tempo/plan/v3-architecture-discoverability.md @@ -0,0 +1,51 @@ +# Tempo v3.0.0: Architecture & Discoverability Plan + +## Objective +Transition Tempo from a "Self-Contained" bundle to a "Modular Monorepo" participant. This involves decoupling `@magmacomputing/library` into a standalone, reachable package to support a growing ecosystem of private monorepos. + +## Current State (v2.x) +- **Bundled Library**: The `#library` workspace is compiled directly into `tempo/dist/lib`. +- **Consumption**: Tempo is published as a zero-dependency package. +- **Limitation**: `library` is not easily reachable by other monorepos (e.g., the `white` repo). +- **Inefficiency**: Multiple packages using `library` results in duplicate code in the final user bundle. + +## The v3.0.0 Vision + +### 1. Library Publication +- **Registry**: Move `@magmacomputing/library` to npmjs as a public package. +- **Versioning**: Ensure independent versioning for the library to support multiple consumers at different lifecycles. + +### 2. Dependency Management +- **ESM Builds**: Tempo will list `@magmacomputing/library` as a formal `dependency`. This allows modern bundlers (Vite, Webpack) to deduplicate the library code across multiple internal packages. +- **Hybrid Bundling**: + - **Granular ESM**: No longer carries `lib/`. Imports from `@magmacomputing/library`. + - **Global Bundle (IIFE)**: Remains self-contained for easy `