toga-ai 1.0.660 → 1.0.661

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,3 +13,4 @@
13
13
  | [Talos AI-Assistant Component (launcher + slide-out chat panel)](features/talos-assistant.md) | `Talos` is a **shared, pure-UI** AI-assistant component in `@agilant/toga-blox`: a header launcher button (`TalosLauncher`) plus a slide-out chat panel (`TalosP | toga-blox/src/components/Talos/TalosLauncher.tsx, toga-blox/src/components/Talos/TalosPanel.tsx, toga-blox/src/components/Talos/TalosMessage.tsx, toga-blox/src/components/Talos/types.ts, toga-blox/src/components/Talos/theme.ts, toga-blox/src/components/Talos/helpers.tsx, toga-blox/src/components/Talos/stub.ts, toga-blox/src/components/Talos/Talos.module.css, toga-blox/src/components/Talos/index.ts, toga-blox/src/components/index.ts |
14
14
  | [Toaster — host-token styling contract](features/toaster.md) | The blox `Toaster` is a CSS-Module component whose every visual property reads a `--toaster-*` custom property supplied by the **host app**. | toga-blox/src/components/Toaster/Toaster.module.css, toga-blox/src/components/Toaster/Toaster.tsx, toga-blox/src/components/Toaster/ToasterContext.tsx, toga2-commerce/src/styles/index.css, toga2-commerce/src/components/Toasters/ToasterList.tsx |
15
15
  | [Dynamic npm Publish Pipeline (branch → channel)](workflows/dynamic-publish-pipeline.md) | How `@agilant/toga-blox` (checkout folder `toga-blox-npm`, registry repo key `toga-blox`) publishes a per-environment npm **channel** (dist-tag) from a `_<mode> | toga-blox/.github/workflows/publish.yml, toga-blox/package.json, toga-blox/src/utils/getFontAwesomeIcon.tsx |
16
+ | [Landing a Large Long-Lived Feature Branch (merge, never rebase)](workflows/landing-a-large-feature-branch.md) | The procedure for landing a long-lived, very large feature branch (months old, hundreds of commits) into `_production` in `toga-blox-npm`. | toga-blox/package.json, toga-blox/.github/workflows/publish.yml |
@@ -14,6 +14,7 @@ files:
14
14
  - toga-blox/src/utils/getFontAwesomeIcon.tsx
15
15
  related:
16
16
  - ../architecture.md
17
+ - ./landing-a-large-feature-branch.md
17
18
  - ../../toga2-commerce/workflows/amplify-build-and-deploy.md
18
19
  ---
19
20
 
@@ -0,0 +1,80 @@
1
+ ---
2
+ title: Landing a Large Long-Lived Feature Branch (merge, never rebase)
3
+ framework: "2.0"
4
+ repo: toga-blox
5
+ project: TOGa Blox
6
+ client: shared
7
+ type: workflow
8
+ status: active
9
+ updated: 2026-08-26
10
+ owners: [apeterson]
11
+ files:
12
+ - toga-blox/package.json
13
+ - toga-blox/.github/workflows/publish.yml
14
+ related:
15
+ - ./dynamic-publish-pipeline.md
16
+ - ../architecture.md
17
+ ---
18
+
19
+ ## What it is
20
+
21
+ The procedure for landing a long-lived, very large feature branch (months old, hundreds of
22
+ commits) into `_production` in `toga-blox-npm`. The decision recorded here is **merge
23
+ `_production` into the feature branch — do not rebase.** Use this doc before starting any
24
+ big-branch integration; the recon step is the transferable part.
25
+
26
+ ## How it works
27
+
28
+ ### 1. Measure the divergence first
29
+
30
+ ```
31
+ git rev-list --left-right --count origin/_production...<branch>
32
+ ```
33
+
34
+ Concrete case (2026-08-26): `feature-new-table` was **281 commits ahead / 8 behind**
35
+ `origin/_production`, forked ~3 months earlier, 530 files changed (+46,795 / −14,209).
36
+
37
+ ### 2. Preview the conflict surface BEFORE merging
38
+
39
+ ```
40
+ git merge-tree $(git merge-base origin/_production <branch>) <branch> origin/_production
41
+ ```
42
+
43
+ This shows the exact conflicting files without touching the working tree, which turns
44
+ "530 changed files" into an actionable list. In the case above it was only **4 files**:
45
+
46
+ | File | Resolution |
47
+ |---|---|
48
+ | `package-lock.json` | **regenerate**, never hand-merge |
49
+ | a component `index.ts` | added independently on both sides — union the exports |
50
+ | a `utils` file | `_production` held two type fixes — keep them |
51
+ | `.github/workflows/publish.yml` | both sides added publish channels — **keep both sets** |
52
+
53
+ ### 3. Merge `_production` into the feature branch, then PR
54
+
55
+ 1. `git merge origin/_production` **on the feature branch**.
56
+ 2. Resolve the (small, known) conflict set **once**.
57
+ 3. Open a normal PR: feature → `_production`.
58
+
59
+ ### Why not rebase
60
+
61
+ Rebasing 281 commits onto `_production` replays every commit, forces the **same conflicts to
62
+ be re-resolved repeatedly**, and **force-rewrites an already-pushed shared branch** — which
63
+ the git-workflow rules forbid on a branch others may have pulled. Merging resolves the
64
+ conflict set exactly once and preserves the pushed history.
65
+
66
+ ## Gotchas
67
+
68
+ - **Confirm the release version before merging.** The `version` in `package.json` drives what
69
+ the publish workflow releases. The feature branch carried `1.0.322` while `_production` was
70
+ at `1.0.314`, so the merge publishes the *branch's* number. See
71
+ [dynamic-publish-pipeline](./dynamic-publish-pipeline.md) for how CI derives the published
72
+ version from that base.
73
+ - **Do not read a behind-count as staleness** in this repo — much of it is release plumbing
74
+ generated on the release branch and never merged back (see the publish-pipeline doc).
75
+
76
+ ## Change history
77
+ - 2026-08-26 — Created. Recorded the merge-not-rebase decision for landing `feature-new-table`
78
+ (281 ahead / 8 behind, 530 files) into `_production`, and the
79
+ `rev-list --left-right --count` → `merge-tree` recon pair that narrowed the conflict surface
80
+ to 4 files before any merge was started. (apeterson)
@@ -31,7 +31,7 @@ _Auto-generated by `knowledge.js index`. Do not hand-edit._
31
31
  - **ai-bdr** (AI-BDR) — 13 doc(s) → [2.0/apps/ai-bdr/INDEX.md](2.0/apps/ai-bdr/INDEX.md)
32
32
  - **toga2-commerce** (TOGa Commerce) — 19 doc(s) → [2.0/apps/toga2-commerce/INDEX.md](2.0/apps/toga2-commerce/INDEX.md)
33
33
  - **toga25-supply** (TOGa 2.5 Supply) — 12 doc(s) → [2.0/apps/toga25-supply/INDEX.md](2.0/apps/toga25-supply/INDEX.md)
34
- - **toga-blox** (TOGa Blox) — 11 doc(s) → [2.0/apps/toga-blox/INDEX.md](2.0/apps/toga-blox/INDEX.md)
34
+ - **toga-blox** (TOGa Blox) — 12 doc(s) → [2.0/apps/toga-blox/INDEX.md](2.0/apps/toga-blox/INDEX.md)
35
35
  - **bdr** (BDR) — 0 doc(s) → [2.0/apps/bdr/INDEX.md](2.0/apps/bdr/INDEX.md)
36
36
 
37
37
  ## standalone framework
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.660",
3
+ "version": "1.0.661",
4
4
  "description": "TOGA Technology Team Claude Knowledge System — shared AI coding harness with skills, knowledge base CLI, and project installer for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",