1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2026-02-11 20:50:20 +00:00

Compare commits

..

9 Commits

Author SHA1 Message Date
Jeremy Ruston
f63d56e21f Various change note fixes 2026-02-11 18:11:57 +00:00
Jeremy Ruston
e11c3033cf More tweaks 2026-02-11 17:51:18 +00:00
Jeremy Ruston
65fef1a731 Corrections 2026-02-11 17:51:09 +00:00
Jeremy Ruston
aed4e082f7 Add some colour (possibly too much) 2026-02-11 17:34:37 +00:00
Jeremy Ruston
ec01222171 UI Tweaks 2026-02-11 17:26:20 +00:00
Jeremy Ruston
1bc9b4bf33 First pass 2026-02-11 16:12:49 +00:00
Mario Pietsch
42a908e1c9 set arrow function parens to always (#9590) 2026-02-10 12:35:10 +01:00
Cameron Fischer
70689a6de4 keyboard-driven-input couldn't use slots well (#9649)
Now it can, at least now without strange and arbitary tweaks to the $depth attribute.
2026-02-10 12:30:08 +01:00
Jeremy Ruston
64ee20edd2 Further MVV fixes (#9645)
* Add ((var)) syntax for passing multi-valued variables through transclude pipeline

Introduce ((var)) attribute syntax to explicitly pass
MVVs to procedures and functions via $transclude, solving the limitation
where <<var>> always resolves to the first value only for backwards
compatibility. Also adds ((var||sep)) and (((filter||sep))) inline display
syntax for debugging MVV values, and multivalued defaults for parameter attributes

* Create pr-draft.md

* Revert "Create pr-draft.md"

This reverts commit dd116af41b.

* Update change note

* Fix linting errors
2026-02-10 12:16:20 +01:00
30 changed files with 580 additions and 126 deletions

View File

@@ -122,15 +122,15 @@ tags: $:/tags/Macro
\whitespace trim
\procedure keyboard-driven-input-actions()
<%if [<event-key-descriptor>match[((input-accept))]] %>
<<inputAcceptActions>>
<$transclude $variable=inputAcceptActions $fillignore=yes />
<%elseif [<event-key-descriptor>match[((input-accept-variant))]] %>
<<inputAcceptVariantActions>>
<$transclude $variable=inputAcceptVariantActions $fillignore=yes />
<%elseif [<event-key-descriptor>match[((input-up))]] %>
<<input-next-actions-before>>
<$transclude $variable=input-next-actions-before $fillignore=yes />
<%elseif [<event-key-descriptor>match[((input-down))]] %>
<<input-next-actions-after>>
<$transclude $variable=input-next-actions-after $fillignore=yes />
<%elseif [<event-key-descriptor>match[((input-cancel))]] %>
<<inputCancelActions>>
<$transclude $variable=inputCancelActions $fillignore=yes />
<%endif%>
\end keyboard-driven-input-actions

View File

@@ -1,4 +1,4 @@
change-category: internal
change-category: developer
change-type: enhancement
created: 20260120153052332
description: Adds a destroy method for widgets allowing for clean up of resources when a widget is removed.

View File

@@ -4,5 +4,5 @@ release: 5.4.0
tags: $:/tags/ChangeNote
change-type: performance
change-category: internal
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9118
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9119
github-contributors: Leilei332

View File

@@ -4,5 +4,5 @@ release: 5.4.0
tags: $:/tags/ChangeNote
change-type: deprecation
change-category: internal
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9118
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9131
github-contributors: Leilei332

View File

@@ -1,9 +1,9 @@
title: $:/changenotes/5.4.0/#9177
description: Add Display Field to list-tagged-draggable and list-links-draggable
description: Add Display Field to list-tagged-draggable and list-links-draggable macros
release: 5.4.0
tags: $:/tags/ChangeNote
change-type: enhancement
change-category: usability
change-category: hackability
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9177
github-contributors: kookma

View File

@@ -7,4 +7,4 @@ change-category: internal
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9235 https://github.com/TiddlyWiki/TiddlyWiki5/pull/9325
github-contributors: Leilei332
Removes nested `<span class="tc-keyboard">` element in core search field.
Removes nested `<span class="tc-keyboard">` element in core search field.

View File

@@ -1,4 +1,4 @@
change-category: usability
change-category: hackability
change-type: enhancement
created: 20251115012214040
description: list-links-draggable defaults to currentTiddler if tiddler parameter is missing

View File

@@ -4,7 +4,7 @@ release: 5.4.0
tags: $:/tags/ChangeNote
change-type: enhancement
change-category: internal
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9287
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9287 https://github.com/TiddlyWiki/TiddlyWiki5/pull/9657
github-contributors: Jermolene
Doing so enables us to filter and group changes. For example, we could show all the breaking changes between two releases.

View File

@@ -3,7 +3,7 @@ description: Add the prevailing mimetype for CSV parser
release: 5.4.0
tags: $:/tags/ChangeNote
change-type: enhancement
change-category: internal
change-category: developer
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9445
github-contributors: EvidentlyCube

View File

@@ -3,7 +3,7 @@ description: Import UI now conditionally displays file-type-specific import opti
tags: $:/tags/ChangeNote
release: 5.4.0
change-type: enhancement
change-category: hackability
change-category: usability
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9465
github-contributors: linonetwo

View File

@@ -5,6 +5,6 @@ tags: $:/tags/ChangeNote
change-type: bugfix
change-category: internal
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9570
github-contributors: jermolene
github-contributors: Jermolene
Fixes issue whereby transcluding a _canonical_uri tiddler with a missing image did not assign the progress classes `tc-image-loading`, `tc-image-loaded` and `tc-image-error`.

View File

@@ -3,7 +3,7 @@ created: 20260106174849522
modified: 20260106174849522
tags: $:/tags/ChangeNote
change-type: enhancement
change-category: usability
change-category: hackability
description: The button classes of Editor toolbar buttons can now be evaluated as filter expressions
release: 5.4.0
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9585

View File

@@ -1,7 +1,7 @@
change-category: widget
change-type: enhancement
created: 20260125124838970
description: adds support for pointer capture and enabling/disabling the widget
description: Adds support for pointer capture and enabling/disabling to the EventCatcherWidget.
github-contributors: saqimtiaz
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9609
modified: 20260125202924515

View File

@@ -1,4 +1,4 @@
change-category: usability
change-category: hackability
change-type: enhancement
created: 20260124121646761
description: The simple toc macro now supports a level parameter

View File

@@ -1,4 +1,4 @@
change-category: usability
change-category: hackability
change-type: enhancement
created: 20260126125300
description: Add start- and endactions to link-widget, list-links-draggable and list-tagged-draggable macros

View File

@@ -3,7 +3,7 @@ description: Add "Cascade Details" to the Advanced tab of the Tiddler Info panel
tags: $:/tags/ChangeNote
release: 5.4.0
change-type: enhancement
change-category: hackability
change-category: usability
github-links: https://github.com/Jermolene/TiddlyWiki5/pull/9634 https://github.com/Jermolene/TiddlyWiki5/pull/9643
github-contributors: DesignThinkerer

View File

@@ -3,11 +3,11 @@ description: Background actions and media query tracking
tags: $:/tags/ChangeNote
release: 5.4.0
change-type: enhancement
change-category: internal
change-category: hackability
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9641
github-contributors: Jermolene
Introduces[[Background Actions]] that are triggered whenever there is a change to the results of a specified filter.
Introduces [[Background Actions]] that are triggered whenever there is a change to the results of a specified filter.
Building on that, it also introduces a new [[Media Query Tracker Mechanism]] that can track the results of any CSS media query (not just dark mode), storing the results in a shadow `$:/info/...` tiddler

View File

@@ -7,9 +7,9 @@ type: text/vnd.tiddlywiki
description: Under development
\procedure release-introduction()
Release v5.4.0 is an important release because it deliberately and forensically loosens backwards compatibility where needed to allow significant new features and fundamental improvements to be made.
Release v5.4.0 deliberately and forensically loosens backwards compatibility to clear the path for significant new features and fundamental improvements to be made in the future.
''Please note that this release note is not yet fully completed, please see the change history on ~GitHub for the full list of changes included in this release.''
''Please note that there are some changes that do not yet change notes, please see the change history on ~GitHub for the full list of changes.''
See the [[project plan|https://github.com/orgs/TiddlyWiki/projects/4]] for full details.
\end release-introduction

View File

@@ -3,7 +3,7 @@ description: Draft title internationalization
release: 5.4.0
tags: $:/tags/ChangeNote
change-type: enhancement
change-category: internal
change-category: translation
github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/8891
github-contributors: Leilei332

View File

@@ -53,3 +53,13 @@ Impact note fields:
* `description` - a brief description of the impact
* `impact-type` - the type of impact; see [[here|Release Notes and Changes]] for valid values
* `text` - description of the impact if required
! Summary Lists
Summary sections are curated via lists stored in fields on the tiddler `$:/tw5.com/releases/info/summary-lists`.
Each field is named `<section>/<release>` and contains a list of change note tiddler titles, for example:
* `highlights/5.4.0`
* `big-bug-fixes/5.4.0`
* `clearing-the-decks/5.4.0`

View File

@@ -1,35 +1,75 @@
title: $:/tw5.com/releases/info/
category-order: translation plugin usability theme hackability widget filters performance nodejs internal developer
categories/internal/caption: Internal
categories/translation/caption: Translation
categories/plugin/caption: Plugin
categories/widget/caption: Widget
categories/usability/caption: Usability
categories/theme/caption: Theme
categories/hackability/caption: Hackability
categories/nodejs/caption: Node.js
categories/performance/caption: Performance
categories/developer/caption: Developer
categories/filters/caption: Filters
change-types/bugfix/caption: Bugfix
category-order: translation usability hackability performance widget filters plugin theme nodejs developer internal
summary-section-order: highlights big-bug-fixes clearing-the-decks
change-type-order: feature enhancement performance bugfix deprecation security
impact-type-order: compatibility-break deprecation pluginisation
tab-order: [[Summary]] [[Change Types]] [[Change Categories]] [[Impacts]]
categories/developer/singular: Developer
categories/developer/plural: Developer
categories/filters/singular: Filters
categories/filters/plural: Filters
categories/hackability/singular: Hackability
categories/hackability/plural: Hackability
categories/internal/singular: Internal
categories/internal/plural: Internal
categories/nodejs/singular: Node.js
categories/nodejs/plural: Node.js
categories/performance/singular: Performance
categories/performance/plural: Performance
categories/plugin/singular: Plugin
categories/plugin/plural: Plugins
categories/theme/singular: Theme
categories/theme/plural: Theming
categories/translation/singular: Translation
categories/translation/plural: Translation
categories/usability/singular: Usability
categories/usability/plural: Usability
categories/widget/singular: Widget
categories/widget/plural: Widgets
change-types/bugfix/singular: Bugfix
change-types/bugfix/colour: #ffe246
change-types/feature/caption: Feature
change-types/feature/colour: #91ba66
change-types/enhancement/caption: Enhancement
change-types/enhancement/colour: #cba5ff
change-types/deprecation/caption: Deprecation
change-types/bugfix/plural: Bugfixes
change-types/deprecation/singular: Deprecation
change-types/deprecation/colour: #ff9d6c
change-types/security/caption: Security
change-types/security/colour: #ff6666
change-types/performance/caption: Performance
change-types/deprecation/plural: Deprecations
change-types/enhancement/singular: Enhancement
change-types/enhancement/colour: #cba5ff
change-types/enhancement/plural: Enhancements
change-types/feature/singular: Feature
change-types/feature/colour: #91ba66
change-types/feature/plural: Features
change-types/performance/singular: Performance
change-types/performance/colour: #c2c7ff
impact-types/deprecation/caption: Deprecation
impact-types/deprecation/colour/foreground: #882222
impact-types/deprecation/colour/background: #ffdddd
impact-types/compatibility-break/caption: Compatibility Break
impact-types/compatibility-break/colour/foreground: #228822
change-types/performance/plural: Performance
change-types/security/singular: Security
change-types/security/colour: #ff6666
change-types/security/plural: Security
impact-types/compatibility-break/singular: Compatibility Break
impact-types/compatibility-break/colour/background: #ddffdd
impact-types/pluginisation/caption: Pluginisation
impact-types/pluginisation/colour/foreground: #222288
impact-types/compatibility-break/colour/foreground: #228822
impact-types/compatibility-break/plural: Compatibility Breaks
impact-types/deprecation/singular: Deprecation
impact-types/deprecation/colour/background: #ffdddd
impact-types/deprecation/colour/foreground: #882222
impact-types/deprecation/plural: Deprecations
impact-types/pluginisation/singular: Pluginisation
impact-types/pluginisation/colour/background: #ddddff
impact-types/pluginisation/colour/foreground: #222288
impact-types/pluginisation/plural: Pluginisations
summary-sections/big-bug-fixes/plural: Big Bug Fixes
summary-sections/clearing-the-decks/plural: Clearing the Decks
summary-sections/highlights/plural: Highlights
summary-sections/highlights/default-state: open
categories/translation/colour: #7ec8e3
categories/usability/colour: #f4a261
categories/hackability/colour: #9b8ec4
categories/performance/colour: #87ceeb
categories/widget/colour: #e78ac3
categories/filters/colour: #8cc56d
categories/plugin/colour: #f0c674
categories/theme/colour: #d4a76a
categories/nodejs/colour: #77bb66
categories/developer/colour: #6baed6
categories/internal/colour: #b0b0b0

View File

@@ -48,69 +48,295 @@ tags: $:/tags/Global
</span>
\end impact-pill
\procedure change-list()
\procedure release-section-toggle(state,default)
\whitespace trim
<div class="doc-release-note">
<$list filter="[enlist{$:/tw5.com/releases/info/category-order}]" variable="category">
<%if [tag[$:/tags/ChangeNote]] :filter[{!!release}match<release>] :filter[{!!change-category}match<category>] %>
<div class="doc-release-note-heading">
<h2 class="doc-change-note-category">
<$text text={{{ [[$:/tw5.com/releases/info/categories/]addsuffix<category>addsuffix[/caption]get[text]] }}} />
</h2>
</div>
<$list filter="[tag[$:/tags/ChangeNote]] :filter[{!!release}match<release>] :filter[{!!change-category}match<category>sort[description]]" variable="change">
<div class="doc-change-note-item">
<h3 class="doc-change-note-heading">
<$link
to="Release Notes and Changes"
class="doc-link-badge"
style.backgroundColor={{{ [<change>get[change-type]addprefix[$:/tw5.com/releases/info/change-types/]addsuffix[/colour]get[text]] }}}
>
<$text text={{{ [<change>get[change-type]addprefix[$:/tw5.com/releases/info/change-types/]addsuffix[/caption]get[text]] }}}/>
</$link> <$transclude $tiddler=<<change>> $field="description" $mode="inline"/></h3>
<div class="doc-change-note-info-list">
<$list filter="[tag[$:/tags/ImpactNote]] :filter[{!!changenote}match<change>] +[sort[description]]" variable="impact" counter="impactCount">
<div class="doc-change-note-info-list-item-caption">
<%if [<impactCount>match[1]] %>
Impact:
<%endif%>
</div>
<div class="doc-change-note-info-list-item-description">
<div class="doc-change-note-info-list-item-description-summary">
<$transclude $variable="impact-pill" $mode="inline" impact-type={{{ [<impact>get[impact-type]] }}}/>
<$text text=": "/>
<$transclude $tiddler=<<impact>> $field="description" $mode="inline"/>
</div>
<div class="doc-change-note-info-list-item-description-details">
<$transclude $tiddler=<<impact>> $field="text" $mode="block"/>
</div>
</div>
</$list>
<div class="doc-change-note-info-list-item-caption">
<$text text="GitHub: "/>
</div>
<div class="doc-change-note-info-list-item-description">
<$list filter="[<change>get[github-links]enlist-input[]]" variable="link">
<a
href=<<link>>
class="doc-github-link"
target="_blank"
rel="noopener noreferrer"
>
{{$:/core/images/github}}
</a>
</$list>
</div>
</div>
<div class="doc-change-note-description">
<$transclude $tiddler=<<change>> $mode="block"/>
</div>
</div>
</$list>
<%endif%>
<$reveal type="nomatch" state=<<state>> text="open" default=<<default>> tag="span">
<$action-setfield $tiddler=<<state>> $field="text" $value="open"/>
<span class="doc-release-section-toggle">{{$:/core/images/right-arrow}}</span>
</$reveal>
<$reveal type="match" state=<<state>> text="open" default=<<default>> tag="span">
<$action-setfield $tiddler=<<state>> $field="text" $value="close"/>
<span class="doc-release-section-toggle">{{$:/core/images/down-arrow}}</span>
</$reveal>
\end release-section-toggle
\procedure change-note-type-badge()
\whitespace trim
<$link
to="Release Notes and Changes"
class="doc-link-badge"
style.backgroundColor={{{ [<change>get[change-type]addprefix[$:/tw5.com/releases/info/change-types/]addsuffix[/colour]get[text]] }}}
>
<$text text={{{ [<change>get[change-type]addprefix[$:/tw5.com/releases/info/change-types/]addsuffix[/singular]get[text]] }}}/>
</$link>
\end change-note-type-badge
\procedure change-note-category-badge()
\whitespace trim
<$link
to="Release Notes and Changes"
class="doc-link-badge"
style.backgroundColor={{{ [<change>get[change-category]addprefix[$:/tw5.com/releases/info/categories/]addsuffix[/colour]get[text]] }}}
>
<$text text={{{ [<change>get[change-category]addprefix[$:/tw5.com/releases/info/categories/]addsuffix[/singular]get[text]] }}}/>
</$link>
\end change-note-category-badge
\procedure change-note-heading()
\whitespace trim
<h3 class="doc-change-note-heading"
style.backgroundColor={{{ [<change>get[change-type]addprefix[$:/tw5.com/releases/info/change-types/]addsuffix[/colour]get[text]addsuffix[40]] }}}
>
<%if [<show-type-badge>!match[no]] %><<change-note-type-badge>><%endif%>
<%if [<show-category-badge>match[yes]] %><<change-note-category-badge>><%endif%>
<%if [<show-tiddler-link>match[yes]] %><$link to=<<change>> class="doc-change-note-description-link"><$transclude $tiddler=<<change>> $field="description" $mode="inline"/></$link><%else%><$transclude $tiddler=<<change>> $field="description" $mode="inline"/><%endif%>
</h3>
\end change-note-heading
\procedure change-note-impacts()
\whitespace trim
<$list filter="[tag[$:/tags/ImpactNote]] :filter[{!!changenote}match<change>] +[sort[description]]" variable="impact" counter="impactCount">
<div class="doc-change-note-info-list-item-caption">
<%if [<impactCount>match[1]] %>Impact:<%endif%>
</div>
<div class="doc-change-note-info-list-item-description">
<div class="doc-change-note-info-list-item-description-summary">
<$transclude $variable="impact-pill" $mode="inline" impact-type={{{ [<impact>get[impact-type]] }}}/>
<$text text=": "/>
<%if [<show-tiddler-link>match[yes]] %><$link to=<<impact>> class="doc-change-note-description-link"><$transclude $tiddler=<<impact>> $field="description" $mode="inline"/></$link><%else%><$transclude $tiddler=<<impact>> $field="description" $mode="inline"/><%endif%>
</div>
<div class="doc-change-note-info-list-item-description-details">
<$transclude $tiddler=<<impact>> $field="text" $mode="block"/>
</div>
</div>
</$list>
\end change-note-impacts
\procedure change-note-github-links()
\whitespace trim
<div class="doc-change-note-info-list-item-caption">
<$text text="GitHub: "/>
</div>
<div class="doc-change-note-info-list-item-description">
<$list filter="[<change>get[github-links]enlist-input[]]" variable="link">
<a href=<<link>> class="doc-github-link" target="_blank" rel="noopener noreferrer">
{{$:/core/images/github}}
</a>
</$list>
</div>
\end change-list
\end change-note-github-links
\procedure change-note-info()
\whitespace trim
<div class="doc-change-note-info-list">
<%if [<show-change-impacts>!match[no]] %><<change-note-impacts>><%endif%>
<<change-note-github-links>>
</div>
\end change-note-info
\procedure change-note-description()
\whitespace trim
<div class="doc-change-note-description">
<$transclude $tiddler=<<change>> $mode="block"/>
</div>
\end change-note-description
\procedure change-note-item()
\whitespace trim
<div class="doc-change-note-item">
<<change-note-heading>>
<<change-note-info>>
<<change-note-description>>
</div>
\end change-note-item
\procedure change-note-list(filter)
\whitespace trim
<$list
filter=<<filter>>
variable="change"
emptyMessage="<div class='doc-change-note-empty'>No curated changes yet.</div>"
>
<<change-note-item>>
</$list>
\end change-note-list
\procedure summary-section()
\whitespace trim
<$let
summaryState={{{ [<release>addprefix[$:/state/release/summary/]addsuffix[/]addsuffix<summary-key>] }}}
summaryDefault={{{ [[$:/tw5.com/releases/info/summary-sections/]addsuffix<summary-key>addsuffix[/default-state]get[text]] }}}
summaryListTiddler="$:/tw5.com/releases/info/summary-lists"
summaryListField={{{ [<summary-key>addsuffix[/]addsuffix<release>] }}}
>
<$let summaryFilter="[<summaryListTiddler>get<summaryListField>enlist-input[]]">
<div class="doc-release-section">
<$button class="tc-btn-invisible doc-release-section-summary">
<$macrocall $name="release-section-toggle" state=<<summaryState>> default=<<summaryDefault>>/>
<span class="doc-release-section-summary-text">
<$text text={{{ [[$:/tw5.com/releases/info/summary-sections/]addsuffix<summary-key>addsuffix[/plural]get[text]] }}} />
<$text text=" "/><span class="doc-release-section-count">(<$text text={{{ [<summaryListTiddler>get<summaryListField>enlist-input[]] +[count[]] }}}/>)</span>
</span>
</$button>
<$reveal type="match" state=<<summaryState>> text="open" default=<<summaryDefault>> tag="div" class="doc-release-section-body">
<$macrocall $name="change-note-list" filter=<<summaryFilter>>/>
</$reveal>
</div>
</$let>
</$let>
\end summary-section
\procedure summary-tab()
\whitespace trim
<$let show-type-badge="yes" show-category-badge="yes" show-change-impacts="yes" show-tiddler-link="yes">
<div class="doc-release-summary">
<$list filter="[enlist{$:/tw5.com/releases/info/summary-section-order}]" variable="summary-key">
<div class="doc-release-summary-section">
<$macrocall $name="summary-section"/>
</div>
</$list>
</div>
</$let>
\end summary-tab
\procedure change-type-section()
\whitespace trim
<$let changeTypeState={{{ [<release>addprefix[$:/state/release/change-type/]addsuffix[/]addsuffix<change-type>] }}}>
<div class="doc-release-section">
<$button class="tc-btn-invisible doc-release-section-summary"
style.backgroundColor={{{ [[$:/tw5.com/releases/info/change-types/]addsuffix<change-type>addsuffix[/colour]get[text]addsuffix[40]] }}}
>
<$macrocall $name="release-section-toggle" state=<<changeTypeState>>/>
<span class="doc-release-section-summary-text">
<$text text={{{ [[$:/tw5.com/releases/info/change-types/]addsuffix<change-type>addsuffix[/plural]get[text]] }}} />
<$text text=" "/><span class="doc-release-section-count">(<$text text={{{ [tag[$:/tags/ChangeNote]] :filter[{!!release}match<release>] :filter[{!!change-type}match<change-type>] +[count[]] }}}/>)</span>
</span>
</$button>
<$reveal type="match" state=<<changeTypeState>> text="open" tag="div" class="doc-release-section-body">
<$let typeFilter="[tag[$:/tags/ChangeNote]] :filter[{!!release}match<release>] :filter[{!!change-type}match<change-type>] +[sort[description]]">
<$macrocall $name="change-note-list" filter=<<typeFilter>>/>
</$let>
</$reveal>
</div>
</$let>
\end change-type-section
\procedure change-types-tab()
\whitespace trim
<$let show-type-badge="no" show-category-badge="yes" show-change-impacts="yes" show-tiddler-link="yes">
<$list filter="[enlist{$:/tw5.com/releases/info/change-type-order}]" variable="change-type">
<<change-type-section>>
</$list>
</$let>
\end change-types-tab
\procedure change-category-section()
\whitespace trim
<$let changeCategoryState={{{ [<release>addprefix[$:/state/release/change-category/]addsuffix[/]addsuffix<category>] }}}>
<div class="doc-release-section">
<$button class="tc-btn-invisible doc-release-section-summary"
style.backgroundColor={{{ [[$:/tw5.com/releases/info/categories/]addsuffix<category>addsuffix[/colour]get[text]addsuffix[40]] }}}
>
<$macrocall $name="release-section-toggle" state=<<changeCategoryState>>/>
<span class="doc-release-section-summary-text">
<$text text={{{ [[$:/tw5.com/releases/info/categories/]addsuffix<category>addsuffix[/plural]get[text]] }}} />
<$text text=" "/><span class="doc-release-section-count">(<$text text={{{ [tag[$:/tags/ChangeNote]] :filter[{!!release}match<release>] :filter[{!!change-category}match<category>] +[count[]] }}}/>)</span>
</span>
</$button>
<$reveal type="match" state=<<changeCategoryState>> text="open" tag="div" class="doc-release-section-body">
<$let categoryFilter="[tag[$:/tags/ChangeNote]] :filter[{!!release}match<release>] :filter[{!!change-category}match<category>] +[sort[description]]">
<$macrocall $name="change-note-list" filter=<<categoryFilter>>/>
</$let>
</$reveal>
</div>
</$let>
\end change-category-section
\procedure change-categories-tab()
\whitespace trim
<$let show-type-badge="yes" show-category-badge="no" show-change-impacts="yes" show-tiddler-link="yes">
<$list filter="[enlist{$:/tw5.com/releases/info/category-order}]" variable="category">
<<change-category-section>>
</$list>
</$let>
\end change-categories-tab
\procedure impact-change-note()
\whitespace trim
<$let change={{{ [<impact>get[changenote]] }}} show-change-impacts="no">
<<change-note-item>>
</$let>
\end impact-change-note
\procedure impact-note-item()
\whitespace trim
<div class="doc-impact-note-item">
<h3 class="doc-impact-note-heading"
style.backgroundColor={{{ [<impact>get[impact-type]addprefix[$:/tw5.com/releases/info/impact-types/]addsuffix[/colour/background]get[text]] }}}
>
<$transclude $variable="impact-pill" $mode="inline" impact-type={{{ [<impact>get[impact-type]] }}}/>
<$text text=": "/>
<%if [<show-tiddler-link>match[yes]] %><$link to=<<impact>> class="doc-change-note-description-link"><$transclude $tiddler=<<impact>> $field="description" $mode="inline"/></$link><%else%><$transclude $tiddler=<<impact>> $field="description" $mode="inline"/><%endif%>
</h3>
<div class="doc-impact-note-details">
<$transclude $tiddler=<<impact>> $field="text" $mode="block"/>
</div>
<<impact-change-note>>
</div>
\end impact-note-item
\procedure impact-type-section()
\whitespace trim
<$let impactTypeState={{{ [<release>addprefix[$:/state/release/impact-type/]addsuffix[/]addsuffix<impact-type>] }}}>
<div class="doc-release-section">
<$button class="tc-btn-invisible doc-release-section-summary"
style.backgroundColor={{{ [[$:/tw5.com/releases/info/impact-types/]addsuffix<impact-type>addsuffix[/colour/background]get[text]] }}}
>
<$macrocall $name="release-section-toggle" state=<<impactTypeState>>/>
<span class="doc-release-section-summary-text">
<$text text={{{ [[$:/tw5.com/releases/info/impact-types/]addsuffix<impact-type>addsuffix[/plural]get[text]] }}} />
<$text text=" "/><span class="doc-release-section-count">(<$text text={{{ [tag[$:/tags/ImpactNote]] :filter[{!!impact-type}match<impact-type>] :filter[{!!changenote}get[release]match<release>] +[count[]] }}}/>)</span>
</span>
</$button>
<$reveal type="match" state=<<impactTypeState>> text="open" tag="div" class="doc-release-section-body">
<$list
filter="[tag[$:/tags/ImpactNote]] :filter[{!!impact-type}match<impact-type>] :filter[{!!changenote}get[release]match<release>] +[sort[description]]"
variable="impact"
>
<<impact-note-item>>
</$list>
</$reveal>
</div>
</$let>
\end impact-type-section
\procedure impacts-tab()
\whitespace trim
<$let show-tiddler-link="yes">
<$list filter="[enlist{$:/tw5.com/releases/info/impact-type-order}]" variable="impact-type">
<<impact-type-section>>
</$list>
</$let>
\end impacts-tab
\procedure credits-tab()
\whitespace trim
<div class="doc-release-credits">
A warm thank you to the developers who have contributed to this release:
<<acknowledgements>>
</div>
\end credits-tab
\procedure release-tabs()
\whitespace trim
<$macrocall
$name="tabs"
tabsList="[enlist{$:/tw5.com/releases/info/tab-order}]"
default="Summary"
class="doc-release-tabs"
template="$:/tw5.com/releases/tab-template"
/>
\end release-tabs
\procedure acknowledgements()
<ol class="doc-github-contributors">
@@ -136,21 +362,13 @@ See <<github-release-changes-link>> and [[other releases|TiddlyWiki Releases]].
<<banner-credits>>
! Introduction
<$transclude $variable="release-introduction" $mode="block"/>
! Changes
<<release-tabs>>
<$transclude $variable="change-list" $mode="inline"/>
! Credits
<!-- Acknowledgement list -->
! Acknowledgements
A warm thank you to the developers who have contributed to this release:
<<acknowledgements>>
<<credits-tab>>
</$let>
\end releasenote

View File

@@ -5,6 +5,57 @@ type: text/vnd.tiddlywiki
.doc-release-note {
}
.tc-tab-set.doc-release-tabs {
margin-top: 1rem;
}
.doc-release-summary-section {
margin-bottom: 0.75em;
}
.doc-release-section {
border: 1px solid #e8e8e8;
border-radius: 0.5em;
margin: 0.75em 0;
background: #ffffff;
}
.doc-release-section-summary {
display: flex;
align-items: center;
padding: 0.5em 0.75em;
font-weight: 600;
background: #f1f1f1;
width: 100%;
cursor: pointer;
text-align: left;
border: none;
font-size: inherit;
font-family: inherit;
border-radius: 0.5em 0.5em 0 0;
}
.doc-release-section-toggle {
margin-right: 0.5em;
}
.doc-release-section-summary-text {
flex: 1 1 auto;
}
.doc-release-section-count {
font-weight: normal;
opacity: 0.6;
}
.doc-release-credits {
margin: 0.75em 0;
}
.doc-release-section-body {
padding: 0.5em 0.75em;
}
.doc-release-note-heading {
}
@@ -84,3 +135,56 @@ type: text/vnd.tiddlywiki
padding: 0.25em;
background: #ffffff;
}
.doc-impact-note-item {
border: 1px solid #e8e8e8;
border-radius: 0.5em;
margin: 0.5em 0;
padding: 0.5em;
background: #f9f9f9;
}
.doc-impact-note-heading {
font-weight: 600;
margin: 0 0 0.25em 0;
padding: 0.25em 0.5em;
border-radius: 0.25em;
}
.doc-impact-note-item > .doc-change-note-item {
font-size: 0.9em;
}
.doc-impact-note-details {
font-size: 0.9em;
margin-bottom: 0.5em;
}
.doc-impact-note-change {
display: flex;
gap: 0.5em;
align-items: baseline;
flex-wrap: wrap;
}
.doc-impact-note-change-caption {
text-transform: uppercase;
font-size: 0.7em;
font-weight: bold;
white-space: nowrap;
}
.doc-impact-note-change-link {
font-weight: 600;
}
.doc-change-note-description-link {
font-weight: inherit;
color: inherit;
text-decoration: underline;
text-decoration-style: dotted;
}
.doc-change-note-description-link:hover {
text-decoration-style: solid;
}

View File

@@ -0,0 +1,5 @@
title: $:/tw5.com/releases/info/summary-lists
type: text/vnd.tiddlywiki
highlights/5.4.0: [[$:/changenotes/5.4.0/#9055]] [[$:/changenotes/5.4.0/#9641]] [[$:/changenotes/5.4.0/#8972]]
big-bug-fixes/5.4.0: [[$:/changenotes/5.4.0/#9259]]
clearing-the-decks/5.4.0:

View File

@@ -0,0 +1,14 @@
title: $:/tw5.com/releases/tab-template
type: text/vnd.tiddlywiki
<%if [<currentTab>match[Summary]] %>
<<summary-tab>>
<%elseif [<currentTab>match[Change Types]] %>
<<change-types-tab>>
<%elseif [<currentTab>match[Change Categories]] %>
<<change-categories-tab>>
<%elseif [<currentTab>match[Impacts]] %>
<<impacts-tab>>
<%elseif [<currentTab>match[Credits]] %>
<<credits-tab>>
<%endif%>

View File

@@ -0,0 +1,6 @@
title: $:/tw5.com/releases/ViewTemplate/body/changenote
\whitespace trim
<$let change=<<currentTiddler>> show-type-badge="yes" show-category-badge="yes" show-change-impacts="yes">
<<change-note-item>>
</$let>

View File

@@ -0,0 +1,6 @@
title: $:/tw5.com/releases/ViewTemplateBodyFilters
tags: $:/tags/ViewTemplateBodyFilter
list-before:
[tag[$:/tags/ChangeNote]then[$:/tw5.com/releases/ViewTemplate/body/changenote]]
[tag[$:/tags/ImpactNote]then[$:/tw5.com/releases/ViewTemplate/body/impactnote]]

View File

@@ -0,0 +1,6 @@
title: $:/tw5.com/releases/ViewTemplate/body/impactnote
\whitespace trim
<$let impact=<<currentTiddler>> show-tiddler-link="yes">
<<impact-note-item>>
</$let>

View File

@@ -58,7 +58,7 @@ js.configs.recommended,
"array-callback-return": "off",
"@stylistic/array-element-newline": "off",
"arrow-body-style": "error",
"@stylistic/arrow-parens": ["error", "as-needed"],
"@stylistic/arrow-parens": ["error", "always"],
"@stylistic/arrow-spacing": ["error", {
after: true,
before: true,

45
prompt.md Normal file
View File

@@ -0,0 +1,45 @@
# Release Notes Redesign Prompt (TiddlyWiki5)
You are editing the TiddlyWiki5 repo, focusing on the release notes presentation under `editions/tw5.com/tiddlers/releasenotes/`.
## Goals
- Present release notes with tabs:
- **Summary**: collapsible sections for Highlights, Big Bug Fixes, Clearing the Decks (curated lists).
- **Change Types**
- **Change Categories**
- **Impacts**
- **Credits** (acknowledgements)
- Headings must be customisable via the releases info tiddler.
- Use TiddlyWiki idioms: state stored in tiddlers (not DOM).
- Keep procedures small (≈20 lines), with sensible identifiers.
## Current Implementation (after recent edits)
- `editions/tw5.com/tiddlers/releasenotes/ReleasesProcedures.tid`
- Reworked into many small procedures.
- Tabs use `$:/core/macros/tabs` and template `$:/tw5.com/releases/tab-template`.
- Sections use `$reveal` + `$action-setfield` toggles; state stored in `$:/state/release/...`.
- Summary pulls curated lists from `$:/tw5.com/releases/info/summary-lists` (fields named `<section>/<release>`).
- Change Types/Categories/Impacts list change notes by filters; Credits tab shows acknowledgements.
- `editions/tw5.com/tiddlers/releasenotes/ReleasesTabTemplate.tid`
- Uses `<$list match>` to choose the tab body: Summary, Change Types, Change Categories, Impacts, Credits.
- `editions/tw5.com/tiddlers/releasenotes/ReleasesInfo.multids`
- Added tab order, summary sections & captions/order, change/impact orders.
- `editions/tw5.com/tiddlers/releasenotes/ReleasesStyles.tid`
- Styles for tabs, section headers, toggle icons, impact cards.
- `editions/tw5.com/tiddlers/releasenotes/ReleasesSummaryLists.tid`
- Example curated fields for 5.4.0 (Highlights, Big Bug Fixes, Clearing the Decks) using wiki-links.
## Outstanding Issue
- Summary tab still shows raw keys (e.g., “highlights”) and not the curated change lists. Captions/list lookup likely still failing; needs robust caption lookup and ensuring summary lists are read correctly (field names and filters).
- Other tabs (types/categories/impacts) expand/collapse correctly.
## Open Files in IDE (for context)
- ReleasesProcedures.tid
- ReleasesStyles.tid
- Release Notes and Changes Internals.tid
- Release 5.3.8.tid
- Release 5.4.0.tid
## Reminder
- Avoid adding fields to change notes; curation is via list fields on `$:/tw5.com/releases/info/summary-lists`.
- Keep using tiddler-store state; no DOM state.