Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Smoke tests

on:
pull_request:
push:
branches: [master, beta]

jobs:
smoke:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22

# The app has no package.json; install the test runner without creating one.
- name: Install Playwright
run: npm install --no-save playwright@1.56.1

- name: Install browsers
run: npx playwright install --with-deps chromium webkit

- name: Run smoke tests (Chromium + WebKit)
env:
MT_BROWSERS: chromium,webkit
run: npx playwright test -c tests/playwright.config.js

- name: Upload HTML report
if: failure()
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: tests/playwright-report/
retention-days: 14
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
.claude
node_modules/
test-results/
playwright-report/
81 changes: 78 additions & 3 deletions docs/changelog.html
Original file line number Diff line number Diff line change
Expand Up @@ -224,14 +224,89 @@ <h1>Macrolog</h1>
<h1 class="page-title">Changelog</h1>
<p class="page-subtitle">A history of every update to Macrolog.</p>

<!-- ── v2026-09-02.2 (Scan modal fix) ── -->
<!-- ── v2026-10-07.1 (Targets wizard at launch) ── -->
<div class="release">
<div class="release-dot latest"></div>
<div class="release-header">
<span class="release-version">v2026-09-02.2</span>
<span class="release-date">2 September 2026</span>
<span class="release-version">v2026-10-07.1</span>
<span class="release-date">7 October 2026</span>
<span class="release-badge">Latest</span>
</div>
<div class="release-body">
<div class="change-group">
<div class="change-group-label">Fixed</div>
<ul class="changes">
<li><strong>Targets wizard</strong> — when it is offered as the app opens (for someone who finished or skipped the tour earlier the same day without setting targets), it now opens instead of stopping the rest of the app from loading</li>
</ul>
</div>
</div>
</div>

<!-- ── v2026-10-06.3 (Targets wizard for new users) ── -->
<div class="release">
<div class="release-dot"></div>
<div class="release-header">
<span class="release-version">v2026-10-06.3</span>
<span class="release-date">6 October 2026</span>
</div>
<div class="release-body">
<div class="change-group">
<div class="change-group-label">Fixed</div>
<ul class="changes">
<li><strong>Targets wizard</strong> — new users are offered it once, after the tour or after skipping it. It never opened before, because default targets were saved on launch before the app checked for them, so new users started on 2,500 kcal</li>
</ul>
</div>
</div>
</div>

<!-- ── v2026-10-06.2 (Chart labels, tour, History button, small fixes) ── -->
<div class="release">
<div class="release-dot"></div>
<div class="release-header">
<span class="release-version">v2026-10-06.2</span>
<span class="release-date">6 October 2026</span>
</div>
<div class="release-body">
<div class="change-group">
<div class="change-group-label">Fixed</div>
<ul class="changes">
<li><strong>Chart dates</strong> — the dates under the Trends and Macro History charts were cut off and now show in full</li>
<li><strong>Trends axis labels</strong> — the kg and kcal labels no longer overlap the top axis values, and the first and last bars no longer cover the axis numbers</li>
<li><strong>First-run tour</strong> — steps whose target isn't on screen now show the tip in the middle instead of pointing at the top corner</li>
<li><strong>Ko-fi card</strong> — on tablets and larger screens it sits above the bottom navigation instead of behind it</li>
<li><strong>History calendar</strong> — the "Jump to Today" button was hidden behind the bottom navigation, so tapping it opened Settings instead</li>
<li><strong>Additional Nutrients</strong> — the section in Manual and Quick Add now collapses when you tap its heading; it stays open by default</li>
<li><strong>Food names</strong> — names in the macro breakdown popup are now shown as plain text, so a product name containing HTML can't change the page</li>
<li><strong>Docs What's New</strong> — the update cards now appear in Chrome; they stayed hidden because the reveal never triggered</li>
</ul>
</div>
</div>
</div>

<!-- ── v2026-10-06.1 (Custom foods seeding fix) ── -->
<div class="release">
<div class="release-dot"></div>
<div class="release-header">
<span class="release-version">v2026-10-06.1</span>
<span class="release-date">6 October 2026</span>
</div>
<div class="release-body">
<div class="change-group">
<div class="change-group-label">Fixed</div>
<ul class="changes">
<li><strong>Custom foods</strong> — new installs no longer start with a set of pre-filled custom foods, and foods you delete from your list no longer reappear the next time the app opens</li>
</ul>
</div>
</div>
</div>

<!-- ── v2026-09-02.2 (Scan modal fix) ── -->
<div class="release">
<div class="release-dot"></div>
<div class="release-header">
<span class="release-version">v2026-09-02.2</span>
<span class="release-date">7 September 2026</span>
</div>
<div class="release-body">
<div class="change-group">
<div class="change-group-label">Fixed</div>
Expand Down
48 changes: 37 additions & 11 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,7 @@
clip-path: inset(0 100% 0 0 round 16px);
transition: none;
}
.wipe-card + .wipe-card { margin-top: var(--sc-4); }
.wipe-card.is-revealed {
animation: sc-wipe-in 0.9s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
Expand Down Expand Up @@ -1229,14 +1230,14 @@ <h1 id="hero-heading" class="t-display">

<div class="inner">
<div class="whats-new__meta">
<div class="version-badge">v2026-09-02.2 &middot; 2 Sep 2026</div>
<div class="version-badge">v2026-10-07.1 &middot; 7 Oct 2026</div>

<h2 id="whats-new-heading" class="t-display-sm">
The latest update.
</h2>

<p class="t-body">
Every release is driven by real use. This one is a small but welcome fix for barcode scanning.
Every release is driven by real use. This one keeps your custom foods list to foods you added, makes the chart dates readable again, and helps new users set their own targets.
</p>

<a class="whats-new__changelog-link" href="changelog.html">
Expand All @@ -1245,23 +1246,43 @@ <h2 id="whats-new-heading" class="t-display-sm">
</div>

<div>
<article class="wipe-card" aria-label="Fix: Scan result Log button">
<article class="wipe-card" aria-label="Fix: Custom foods list">
<div class="wipe-card__icon" aria-hidden="true">
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z"/>
<path d="M12 6v6l4 2"/>
</svg>
</div>

<h3>Scan result Log button fix</h3>
<h3>Your custom foods stay your own</h3>

<p class="t-body">
After a barcode scan, the food result popup now clears the bottom navigation bar, so the Log button is always fully visible and tappable.
New installs no longer start with a set of pre-filled custom foods, and any food you delete from your list now stays deleted.
</p>

<div class="wipe-card__detail">
<p>
Added extra bottom padding to the result sheet so its action button no longer sits behind the nav bar.
If your list already has these foods, they stay where they are. Delete any you don't use and they won't come back.
</p>
</div>
</article>

<article class="wipe-card" aria-label="Fix: Chart labels and tour">
<div class="wipe-card__icon" aria-hidden="true">
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/>
</svg>
</div>

<h3>Readable chart dates</h3>

<p class="t-body">
The dates along the bottom of the Trends and Macro History charts were cut off. They now show in full, and the kg and kcal labels no longer overlap the axis numbers.
</p>

<div class="wipe-card__detail">
<p>
New users now get the targets wizard once, after the tour, after skipping it or the next time the app opens, instead of starting on the default 2,500 kcal. Also: the History calendar's "Jump to Today" button is no longer hidden behind the bottom navigation, the Additional Nutrients section now collapses when tapped, the first-run tour no longer points at hidden parts of the screen, and on tablets the Ko-fi card no longer sits behind the navigation.
</p>
</div>
</article>
Expand Down Expand Up @@ -1645,21 +1666,26 @@ <h2 id="developer-heading" class="t-display-sm">
</footer>

<script>
// ── Intersection Observer: wipe-reveal for What's New card ──
// ── Intersection Observer: wipe-reveal for What's New cards ──
(function () {
var card = document.querySelector('.wipe-card');
if (!card) return;
var cards = document.querySelectorAll('.wipe-card');
if (!cards.length) return;

// Watch the cards' column rather than the cards: Chromium treats an element
// clipped to nothing (the cards' starting clip-path) as never intersecting.
var column = cards[0].parentElement;
var obs = new IntersectionObserver(function (entries) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
entry.target.classList.add('is-revealed');
cards.forEach(function (card, i) {
setTimeout(function () { card.classList.add('is-revealed'); }, i * 120);
});
obs.unobserve(entry.target);
}
});
}, { threshold: 0.15 });

obs.observe(card);
obs.observe(column);
})();

// ── Feature cards: stagger fade-up ──
Expand Down
Loading
Loading