mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 04:50:59 +00:00
chore(release): v1.28.3 — consistent spacing and alignment
A layout-audit-driven consistency pass: one shared left edge for insight cards (headings and body align, worst on mobile), no scroll past content on settings and admin pages, Settings/Notifications only in the account menu on mobile, the dashboard action beside its greeting text, and preventive-care/cycle/onboarding cards on the shared card anatomy. The spacing and alignment rules are recorded in the standards. Also stages the document rasterization native binding in the image so a scanned PDF is read on an image-only AI provider.
This commit is contained in:
1 parent
aa415a9e32
commit
f1c468f90f
5 files changed
+33
-3
No files matched your search
@@ -2,6 +2,22 @@
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.28.3] — 2026-07-09 — Consistent spacing and alignment
|
||||
|
||||
A consistency pass across the app, driven by a layout audit. Insight cards now
|
||||
share one left edge — headings and body text line up instead of drifting from
|
||||
card to card (worst on mobile). Settings and admin pages no longer scroll past
|
||||
their content into empty space. On mobile, Settings and Notifications live only
|
||||
in the account menu instead of being duplicated in the overflow menu. The
|
||||
dashboard greeting keeps its action beside the text rather than pushing it onto
|
||||
its own line. Preventive-care, cycle, and onboarding cards adopt the shared card
|
||||
anatomy. The spacing and alignment rules behind these are written down so they
|
||||
hold going forward.
|
||||
|
||||
Also folds in the document PDF rasterization runtime: the image renderer now
|
||||
loads in the container, so a scanned PDF is read on an image-only AI provider
|
||||
(previously it quietly fell back to text-only).
|
||||
|
||||
## [1.28.2] — 2026-07-09 — Automatic AI document reading (opt-in)
|
||||
|
||||
One opt-in in AI settings: read every uploaded document automatically with your
|
||||
|
||||
+14
@@ -81,6 +81,20 @@ COPY --from=builder /app/public ./public
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
||||
|
||||
# @napi-rs/canvas (document PDF rasterization): Next's file tracer copies the
|
||||
# native binary's package into the standalone tree but NOT the pnpm symlink that
|
||||
# @napi-rs/canvas's loader resolves it through, so at runtime it fails with
|
||||
# "Failed to load native binding" and rasterization silently degrades. Copy the
|
||||
# prebuilt .node into the canvas package dir itself so the loader's built-in
|
||||
# local-file fallback (`require('./skia.<triple>.node')`) resolves it. Per-arch
|
||||
# buildx installs only the matching musl triple, so the find is arch-correct.
|
||||
RUN CANVAS_DIR="$(find ./node_modules/.pnpm -maxdepth 4 -type d -path '*@napi-rs+canvas@*/node_modules/@napi-rs/canvas' 2>/dev/null | head -1)"; \
|
||||
NODE_BIN="$(find ./node_modules/.pnpm -maxdepth 5 -name 'skia.linux-*-musl.node' 2>/dev/null | head -1)"; \
|
||||
if [ -n "$CANVAS_DIR" ] && [ -n "$NODE_BIN" ]; then \
|
||||
cp "$NODE_BIN" "$CANVAS_DIR/" && chown nextjs:nodejs "$CANVAS_DIR/$(basename "$NODE_BIN")" && \
|
||||
echo "canvas native binding staged: $(basename "$NODE_BIN") -> $CANVAS_DIR"; \
|
||||
else echo "WARN: canvas native binding not found; PDF rasterization will degrade to local text"; fi
|
||||
|
||||
# Copy Prisma for migrations (schema, migration SQL, config, engines)
|
||||
COPY --from=builder /app/prisma ./prisma
|
||||
COPY --from=builder /app/prisma.config.ts ./prisma.config.ts
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
openapi: 3.1.0
|
||||
info:
|
||||
title: HealthLog API
|
||||
version: 1.28.2
|
||||
version: 1.28.3
|
||||
description: >-
|
||||
Self-hosted personal-health-tracking PWA — public API surface for the iOS native client and external ingest.
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "healthlog",
|
||||
"version": "1.28.2",
|
||||
"version": "1.28.3",
|
||||
"description": "Self-hosted personal-health-tracking PWA with Withings integration, AI insights, and doctor-report PDF export.",
|
||||
"license": "PolyForm-Noncommercial-1.0.0",
|
||||
"homepage": "https://healthlog.dev",
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ try {
|
||||
// v1.4.38.4 → v1.4.42. Do not hand-edit; bump `package.json` and rebuild.
|
||||
const CACHE_VERSION =
|
||||
(typeof self !== "undefined" && self.__APP_VERSION__) ||
|
||||
/* @sw-version-fallback */ "v1.28.2";
|
||||
/* @sw-version-fallback */ "v1.28.3";
|
||||
const STATIC_CACHE = `healthlog-static-${CACHE_VERSION}`;
|
||||
const PAGE_CACHE = `healthlog-pages-${CACHE_VERSION}`;
|
||||
// v1.18.6 — read-only data cache for a curated allowlist of safe GET `/api/*`
|
||||
|
||||
Reference in new issue
Block a user