diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md
index 269c3dcb0..487888e50 100644
--- a/ci/release/changelogs/next.md
+++ b/ci/release/changelogs/next.md
@@ -5,3 +5,4 @@
#### Bugfixes ⛑️
- Error reported when no actors are declared in sequence diagram. [#886](https://github.com/terrastruct/d2/pull/886)
+- Fixed img bundling on image shapes. [#889](https://github.com/terrastruct/d2/issues/889)
diff --git a/d2renderers/d2svg/appendix/testdata/diagram_wider_than_tooltip/sketch.exp.svg b/d2renderers/d2svg/appendix/testdata/diagram_wider_than_tooltip/sketch.exp.svg
index 2a700a79b..cf1ac8dbc 100644
--- a/d2renderers/d2svg/appendix/testdata/diagram_wider_than_tooltip/sketch.exp.svg
+++ b/d2renderers/d2svg/appendix/testdata/diagram_wider_than_tooltip/sketch.exp.svg
@@ -47,7 +47,7 @@
svgEl.setAttribute("height", height * ratio - 16);
}
});
-]]>customerissuerstore1Like starbucks or somethingacquirer2I'm not sure what this isnetworkcustomer bankstore bankinitial transactionpayment processor behind the scenessimplified 1 banana please$10 dollarsthinking: wow, inflationchecks bank accountSavings: $11I can do that, here's my cardRun this cardProcess to card issuerProcess this payment$10 debit$10 creditAn error in judgement is about to occur
+]]>customerissuerstore1Like starbucks or somethingacquirer2I'm not sure what this isnetworkcustomer bankstore bankinitial transactionpayment processor behind the scenessimplified 1 banana please$10 dollarsthinking: wow, inflationchecks bank accountSavings: $11I can do that, here's my cardRun this cardProcess to card issuerProcess this payment$10 debit$10 creditAn error in judgement is about to occur
diff --git a/d2renderers/d2svg/dark_theme/testdata/twitter/dark_theme.exp.svg b/d2renderers/d2svg/dark_theme/testdata/twitter/dark_theme.exp.svg
index 99c56c87a..71f8e83df 100644
--- a/d2renderers/d2svg/dark_theme/testdata/twitter/dark_theme.exp.svg
+++ b/d2renderers/d2svg/dark_theme/testdata/twitter/dark_theme.exp.svg
@@ -793,7 +793,7 @@
.md .contains-task-list:dir(rtl) .task-list-item-checkbox {
margin: 0 -1.6em 0.25em 0.2em;
}
-People discovery serviceAd mixerOnboarding serviceWebIphoneAndroidTimelineScorerHome RankerTimeline ServiceHome mixerManhattanGizmoduckSocial graphPrediction ServiceHome ScorerManhattanMemcacheFetchFeatureScoringPrediction Service...etcTimeline mixer
+
People discovery serviceAd mixerOnboarding serviceWebIphoneAndroidTimelineScorerHome RankerTimeline ServiceHome mixerManhattanGizmoduckSocial graphPrediction ServiceHome ScorerManhattanMemcacheFetchFeatureScoringPrediction Service...etcTimeline mixer
- Inject ads, who-to-follow, onboarding
- Conversation module
@@ -801,7 +801,7 @@
- Tweat deduplication
- Served data logging
-
GraphQLFederated Strato ColumnGraphQLFederated Strato ColumnTLS-API (being deprecated)CrMixerEarlyBirdUtagSpaceCommunities Thrift RPC Candidate FetchFeature HydrationCandidate sources
diff --git a/d2themes/element.go b/d2themes/element.go
index 2d015801c..5cb7b49c3 100644
--- a/d2themes/element.go
+++ b/d2themes/element.go
@@ -96,6 +96,7 @@ func (el *ThemableElement) SetMaskUrl(url string) {
func (el *ThemableElement) Render() string {
out := "<" + el.tag
+ // href has to be at the top for the img bundler to detect tags correctly
if len(el.Href) > 0 {
out += fmt.Sprintf(` href="%s"`, el.Href)
}
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg
index 9ac8b424a..6e4e7c84b 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/dagre/sketch.exp.svg
@@ -30,7 +30,7 @@
svgEl.setAttribute("height", height * ratio - 16);
}
});
-]]>
+]]>
\ No newline at end of file
diff --git a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg
index ac237de57..8f3b72af4 100644
--- a/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg
+++ b/e2etests/testdata/regression/elk_img_empty_label_panic/elk/sketch.exp.svg
@@ -30,7 +30,7 @@
svgEl.setAttribute("height", height * ratio - 16);
}
});
-]]>
+]]>
\ No newline at end of file
diff --git a/e2etests/testdata/stable/images/dagre/sketch.exp.svg b/e2etests/testdata/stable/images/dagre/sketch.exp.svg
index b91cbd931..02d602922 100644
--- a/e2etests/testdata/stable/images/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/images/dagre/sketch.exp.svg
@@ -37,7 +37,7 @@
svgEl.setAttribute("height", height * ratio - 16);
}
});
-]]>ab
+]]>ab
\ No newline at end of file
diff --git a/e2etests/testdata/stable/images/elk/sketch.exp.svg b/e2etests/testdata/stable/images/elk/sketch.exp.svg
index fd3c43173..39e581511 100644
--- a/e2etests/testdata/stable/images/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/images/elk/sketch.exp.svg
@@ -37,7 +37,7 @@
svgEl.setAttribute("height", height * ratio - 16);
}
});
-]]>ab
+]]>ab
\ No newline at end of file
diff --git a/e2etests/testdata/stable/overlapping_image_container_labels/dagre/sketch.exp.svg b/e2etests/testdata/stable/overlapping_image_container_labels/dagre/sketch.exp.svg
index 476ae68dd..2d9d50075 100644
--- a/e2etests/testdata/stable/overlapping_image_container_labels/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/overlapping_image_container_labels/dagre/sketch.exp.svg
@@ -51,7 +51,7 @@
svgEl.setAttribute("height", height * ratio - 16);
}
});
-]]>rootcontainerrootleft2rightrootinnerrootinnerleft2rightleft2right to inner left2to inner rightto inner left2to inner rightto left2 container rootto right container root
+]]>rootcontainerrootleft2rightrootinnerrootinnerleft2rightleft2right to inner left2to inner rightto inner left2to inner rightto left2 container rootto right container root
diff --git a/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg b/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg
index 72ddaaa60..5e4de85c2 100644
--- a/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/overlapping_image_container_labels/elk/sketch.exp.svg
@@ -51,7 +51,7 @@
svgEl.setAttribute("height", height * ratio - 16);
}
});
-]]>rootcontainerrootleft2rightrootinnerrootinnerleft2rightleft2right to inner left2to inner rightto inner left2to inner rightto left2 container rootto right container root
+]]>rootcontainerrootleft2rightrootinnerrootinnerleft2rightleft2right to inner left2to inner rightto inner left2to inner rightto left2 container rootto right container root
diff --git a/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/sketch.exp.svg
index e5991ad0a..090313fe6 100644
--- a/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_all_shapes/dagre/sketch.exp.svg
@@ -67,7 +67,7 @@
});
]]>a labelblabelsa class+public() boolvoid-private() intvoidcloudyyyya := 5
b := a + 7
-fmt.Printf("%d", b)cyldiadocssix cornersa random iconoverpackdocs pagetoohard o saysinglepersona queuea squarea step at a timedatausersidintnamevarchar result := callThisFunction(obj, 5) midthis sideother side
+fmt.Printf("%d", b)cyldiadocssix cornersa random iconoverpackdocs pagetoohard o saysinglepersona queuea squarea step at a timedatausersidintnamevarchar result := callThisFunction(obj, 5) midthis sideother side
diff --git a/e2etests/testdata/stable/sequence_diagram_all_shapes/elk/sketch.exp.svg b/e2etests/testdata/stable/sequence_diagram_all_shapes/elk/sketch.exp.svg
index e5991ad0a..090313fe6 100644
--- a/e2etests/testdata/stable/sequence_diagram_all_shapes/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/sequence_diagram_all_shapes/elk/sketch.exp.svg
@@ -67,7 +67,7 @@
});
]]>a labelblabelsa class+public() boolvoid-private() intvoidcloudyyyya := 5
b := a + 7
-fmt.Printf("%d", b)cyldiadocssix cornersa random iconoverpackdocs pagetoohard o saysinglepersona queuea squarea step at a timedatausersidintnamevarchar result := callThisFunction(obj, 5) midthis sideother side
+fmt.Printf("%d", b)cyldiadocssix cornersa random iconoverpackdocs pagetoohard o saysinglepersona queuea squarea step at a timedatausersidintnamevarchar result := callThisFunction(obj, 5) midthis sideother side