@troylar/flightdeck 2.8.0 → 2.9.0

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  <!-- Generated by build.py from src/releases.json. Edit that file, not this one. -->
4
4
 
5
+ ## 2.9.0 · Oct 27, 2026
6
+
7
+ Team values.
8
+
9
+ ### New
10
+
11
+ - **Keep the team's shared settings in one place** (Settings). Settings › Team values holds settings the whole team uses, like a Bitbucket base URL, each with what it's for. The folder owner and backup owner add, change and remove them; everyone else sees them. Values are trimmed, and the page reminds you not to store passwords or tokens there. If someone else changed the list first, nothing is saved over it: the list reloads and you make the change again. *Where:* Settings, Team values
12
+ - **Pass a team value to a linked run** (Editor). A child detail's source can be A team value, chosen from the folder's list with what each one is for and what it is now. The Markdown gets pass: base=team:bitbucket-base-url. A name that isn't in the folder is flagged in the editor and stops publishing. *Where:* Editing a draft, a Run another process step
13
+ - **The child gets the team value as it is when it starts** (Runs). The team value is read when the child starts and copied into it, so a later change never changes a started child. One that isn't set is asked for this run. If it changes while you fill in the form or while the child is saved, nothing starts and the form opens again with the new value and your answers. A child that changes it doesn't complete the step. *Where:* The run screen, a Run another process step
14
+
15
+ ### Improved
16
+
17
+ - **Link it asks you to confirm team values** (Runs). A run started for a step but never linked can still be linked. On a step that passes team values, Link it shows the run's values and links them only once you confirm them, as shown. If the run changes while you're looking, it shows the new values first. *Where:* The run screen, a run that isn't linked
18
+ - **Folder health checks team-values.json** (Folder health). A team-values.json that can't be read, a conflict copy of it, and a published step whose team value was removed later are each listed with what to do. *Where:* Settings, Folder health
19
+ - **A checklist that passes a team value needs Flightdeck 2.9** (Compatibility). A version that passes a team value, and its runs, open only in Flightdeck 2.9 or later; earlier copies name the version and won't run it. A checklist without one publishes exactly as before. *Where:* Publishing and older copies
20
+
5
21
  ## 2.8.0 · Oct 26, 2026
6
22
 
7
23
  Nested processes that know what the child needs.
package/README.md CHANGED
@@ -223,7 +223,7 @@ roles: release-lead, qa, backend
223
223
  | `## Gate:` · `approves:` | The pause point, and exactly what passing it approves |
224
224
  | `### Track: Name @role` | Parallel work inside a phase |
225
225
  | `at:` · `due:` · `after:` | A clock time, a deadline, or a due time after the run starts |
226
- | `{run.process}` · `carry:` · `pass:` · `version:` | Start another process as a linked child run, passing these details (under another name, as a fixed value, or asked when it starts, with `pass:`, 2.8), on an exact version if you name one |
226
+ | `{run.process}` · `carry:` · `pass:` · `version:` | Start another process as a linked child run, passing these details (under another name, as a fixed value, or asked when it starts, with `pass:`, 2.8; or a team value, `team:`, 2.9), on an exact version if you name one |
227
227
  | `group:` · `tags:` | Where the process sits in your hierarchy, and how to find it |
228
228
  | `context: rows:number, due:date` | Typed run details (number, yes-no, date, choice, link), checked as they're typed |
229
229
  | `> note` · `![caption](images/…)` | A note or screenshot, under a step, a phase or a gate |
@@ -308,6 +308,7 @@ More in [Flightdeck and OneDrive](https://github.com/troylar/flightdeck/blob/mai
308
308
 
309
309
  ```
310
310
  people.json who's on the team, with the folder owner and backup owner
311
+ team-values.json shared settings like a Bitbucket base URL, changed in Settings by the folder owner and backup owner
311
312
  maps/drafts/ checklists being written (Markdown)
312
313
  publications/ published versions, frozen (Flightdeck writes these)
313
314
  staged/ staged versions only test runs use, and each retire or reopen, written once
package/bin/flightdeck.js CHANGED
@@ -1515,7 +1515,13 @@ async function draftMain(argv) {
1515
1515
  (p ? p.broken : []).forEach((x) => { if (!x._readFailed) { const k = PF.appjson.pubProblem(x); L.note('publications/' + n + '/' + x.folder + '/', k.kind, k.why); } });
1516
1516
  } catch (e) { procs[n] = { latest: null, all: [], clashes: [], broken: [], unlisted: 'publications/' + n + '/ couldn\'t be read' }; }
1517
1517
  }
1518
- const c = M.check(map, { people: [], types: {}, workflows: {}, processes: [], children: PF.links.childrenFrom(procs) });
1518
+ /* Team values (2.9), through the same ledger: a failed read is noted by the ledger; damaged or newer content here. */
1519
+ let tv;
1520
+ if (M.steps(map).some((x) => x.step.type === 'run.process' && PF.links.teams(x.step).length)) {
1521
+ tv = await PF.repo.readTeamValues(rfs);
1522
+ if (tv.state === 'malformed' || tv.state === 'newer') L.note(PF.teamValues.FILE, tv.state, tv.why);
1523
+ }
1524
+ const c = M.check(map, { people: [], types: {}, workflows: {}, processes: [], children: PF.links.childrenFrom(procs), teamValues: tv });
1519
1525
  return { checks: { blockers: c.blockers, suggestions: c.suggestions }, problems: L.problems() };
1520
1526
  };
1521
1527
  /* Every problem once: the draft's reads, then the children's. */