Patch round-up, five small fixes that landed before 4.1.5
A single post for five small but real bug fixes that shipped between 4.1.0 (Thickbox launch) and 4.1.5 (auto-refresh). The kind of work that makes the next big feature land cleanly.
- v4.1.4, Fixed `tb_show is not defined` by explicitly enqueueing ThickBox on the frontend
- v4.1.3, Popup auto-close after submission + fixed jQuery dependency check on admin pages
- v4.1.1, Add Entry modal sizing (80% width, 900px max) + plus icon contrast on blue button
- v4.0.3, Resolved double-scrollbar on popup window + strict positioning
- v3.5.3, Real Excel/PDF exports (post merits its own deeper coverage; here for completeness)
Some shipped versions are big stories; others are small, careful bug fixes that smooth the road for what comes next. Between v4.1.0’s Thickbox launch and v4.1.5’s auto-refresh feature, four small patches landed in quick succession. Here they are, with full notes.
v4.0.3, Popup layout fixes#
Shipped: Late November 2025
The 4.0 Thickbox integration (release notes) was a structural win, but the first day of customer use surfaced two layout issues:
- Cut-off form: The popup form was being clipped at the bottom on certain viewport heights because the height calculation assumed a fixed Thickbox padding that’s actually device-dependent.
- Double scrollbar: The popup wrapper had
overflow: scrollAND the iframe inside also hadoverflow: scroll. Two scrollbars next to each other, both controlling different things, the kind of UX that makes users stop trusting the page.
Fix: Switched the form container to display: block with explicit height calculation calc(100vh - 80px). Removed the outer overflow on the wrapper (the iframe scrolls itself). Strict absolute positioning so the rendering is identical across browsers.
Took about two hours to diagnose, ten minutes to fix. The diagnosis is the work.
v4.1.1, Modal sizing and plus icon contrast#
Shipped: December 8, 2025
Two small UX details:
Modal width#
The Add New Entry modal was hardcoded to 600px width. On large monitors it looked like a narrow column floating in the middle of nothing. On small screens it overflowed.
Fix: Switched to 80% width with a 900px max-width. JavaScript now overrides the inline styles Thickbox emits (those styles are set on a <div> after our CSS runs, so we have to override them at the JS layer, not the stylesheet layer).
Net effect: comfortable form width on every screen.
Plus icon contrast#
The “Add New Entry” button is blue. The original ”+” icon was a darker blue. Together they passed colour-contrast minimum at 3.0:1, but only just, and the icon read as muddy on darker monitors.
Fix: White ”+” on the blue button. WCAG AA contrast (4.5:1 against the button background). Visually crisper, accessibility metric improved.
Small change. Took 30 seconds. Mentioned here because tiny accessibility wins are still wins.
v4.1.3, Popup auto-close + jQuery dependency#
Shipped: December 12, 2025
Three small fixes, related to each other:
Popup didn’t auto-close#
After a successful Add Entry submission, the popup was supposed to close itself. It wasn’t, in some cases. Root cause: a syntax error in the cleanup logic that JavaScript happily ignored (no error, just no execution).
Fix: Found via the new debug log (v3.2.0 release notes). Fixed the syntax. Popup closes within 600ms of a successful submit.
jQuery is not defined on admin pages#
Some admin pages had jQuery undefined at the moment our scripts ran. We had a dependency check, but the check was using typeof window.jQuery !== 'undefined' which fails when jQuery loads via AMD/UMD detection without binding to window.
Fix: Replaced with a more robust check that tolerates the various ways jQuery can be loaded. No more spurious admin-page errors.
Cannot read properties of undefined (reading 'top')#
During AJAX form submissions, a callback was reading wrapper.top on a wrapper that had been removed from the DOM. Race condition: form submitted → wrapper unmounted → callback fired with stale reference.
Fix: Preserve the wrapper ID across the unmount, look up by ID at callback time, gracefully no-op if no longer in the DOM.
v4.1.4, tb_show is not defined#
Shipped: December 12, 2025
Same day as 4.1.3, different problem:
Uncaught ReferenceError: tb_show is not defined
tb_show is the Thickbox library’s modal-open function. WordPress core ships Thickbox, but only enqueues it on pages that ask for it.
Our shortcode rendering enqueued the script, but only on pages where the shortcode actually rendered. If the shortcode rendered into a wp_localize_script callback (some custom themes do this), the enqueue ran before WordPress decided which scripts to print, and Thickbox didn’t end up in the page.
Fix: Explicitly call add_thickbox() inside the shortcode template render path. Also bump the internal version constant so any cached old script tags get cache-busted.
Belt and suspenders. The kind of fix that makes the bug not just gone but unlikely to come back.
Why round these up?#
The /releases page exists to be useful, not exhaustive. Five posts for “we fixed five small things in two weeks” buries the architectural releases (4.0.0 Thickbox, 3.4.0 license activation, 2.0.1 rewrite) under noise.
A round-up post groups the small work, cross-links the version tags, and keeps the changelog skimmable. We’ll do these every few months as patches accumulate.
What this work enabled#
By the time v4.1.5 added auto-refresh-after-submission, the popup foundation was solid:
- It closed on submit (4.1.3)
- It loaded reliably (4.1.4)
- It looked right at every size (4.1.1)
- It didn’t double-scroll (4.0.3)
That meant 4.1.5 could focus on the new feature instead of fighting the popup’s regression surface. Small fixes compound.