Project
Changelog
Every release of the log-website repository, newest first. Versioning is decoupled from commits — see ADR-013.
Changelog
All notable changes to the LOG website are recorded here.
This repository follows LOG product release versioning defined in log-documentation/07-engineering/release-process.md.
Version bumps are decoupled from commits. A commit never, on its own, bumps the version, only a deliberate release does. See VERSIONING.md and ADR-013 in log-documentation.
[Unreleased]
Added
Changed
- Aligned
README.mdandVERSIONING.mdwith the canonical LOG roadmap, product release versioning, public website milestone, andmakinda-jacksonrepository links.
Removed
[0.0.6] - 2026-05-16
Changed
- ADR-017 canonical token adoption. Rewrote
app/globals.cssend-to-end using the canonical LOG design-system token catalog (source of truth:log-documentation/04-design/tokens/tokens.json). The file now defines all 12 primitive color ramps (brand,gray,destructive,warning,success,orange,teal,cyan,blue,violet,purple,pink) as CSS custom properties, followed by light-mode semantic aliases (--color-bg-*,--color-text-*,--color-border-*,--color-action-*,--color-status-*,--color-scripture-*), a legacy-compat layer (--log-*), dark-mode overrides, reduced-motion overrides, and a Tailwind v4@thememapping block. - Brand accent replaced. All 19 references to
--log-grace-gold(legacy Grace Gold#C9A227) acrossapp/globals.css,app/page.module.css,app/(legal)/changelog/changelog.module.css, andapp/(legal)/legal.module.csshave been replaced with--log-brand-accent, which resolves tovar(--brand-60)=#926247(canonical warm-brown brand). - Image generators rebranded.
app/icon.js,app/apple-icon.js, andapp/opengraph-image.jsupdated: all#C9A227gold hex values replaced with#926247(brand.60). The apple-icon gradient recomposed asbrand.40 → brand.60 → brand.80(#B1865E → #926247 → #5F3D34). - Fonts.
app/layout.jsnow loads Urbanist (primary sans) and Plus Jakarta Sans (display/serif role) vianext/font/google. CSS variables--font-urbanistand--font-plus-jakarta-sansare injected on<html>and consumed by--log-font-sans/--log-font-serifin globals.css. - Theme colour.
viewport.themeColorupdated: light =#FFFFFF(gray.0), dark =#0C0A09(gray.95), aligning with the canonical semantic surface tokens.
[0.0.5] - 2026-05-16
Added
- Brand favicons.
app/icon.jsrenders a 32×32 PNG (solid Grace Gold with a white serif “L”) used by browsers in tabs, bookmarks, and history.app/apple-icon.jsrenders a 180×180 PNG (Grace-Gold gradient with a larger serif “L”) used by iOS when users add the site to their home screen. Both go throughnext/ogImageResponselike the OG image so the renderer is consistent; both are markeddynamic = 'force-static'for static-export compatibility. /changelogpage that readsCHANGELOG.mdat build time and renders it as styled HTML, using the same long-form typography as/privacyand/terms. Addedmarked@^16as a dependency for the markdown → HTML conversion. The changelog page lives inside the existing(legal)route group so it inherits the shared sticky header and footer.- Added a Changelog link to the in-page legal/docs nav and to the home page footer. Updated the (legal) layout's footer wording so it covers all three pages (not only the legal ones).
Notes
- Adding
/changelogmeans future releases are publicly discoverable without anyone needing to browse the GitHub repo. Good for early testers and store-review verification. markedruns only at build time inside anasyncserver component, so the bundled site has no markdown parser at runtime.- Static export verified:
next buildemits 11 static routes (/,/_not-found,/apple-icon,/changelog,/icon,/opengraph-image,/privacy,/terms,/twitter-image).
[0.0.4] - 2026-05-16
Added
- Social-share preview images. Added
app/opengraph-image.js(and a re-exportingapp/twitter-image.js) using Next.js'sImageResponsefromnext/og. The image is brand-faithful: top gold accent line,LOG · pre-alphaeyebrow, serif headline (“A quiet companion for spiritual health.”), Living-On-Grace subtagline, and a footer withlivingongrace.app+Mobile · Web · Desktop. Output is a real 1200×630 PNG (~74 KB). metadataBase: new URL('https://livingongrace.app')inapp/layout.jsso the auto-generatedog:image/twitter:imageURLs resolve as absolute (https://livingongrace.app/opengraph-image).
Notes
- Required
export const dynamic = 'force-static'on both image route files for compatibility withoutput: 'export'. The images are pre-rendered to plain PNGs at build time and do not need runtime function execution in production. - Verified meta tags:
<meta property="og:image" content="https://livingongrace.app/opengraph-image?…">plusog:image:type,:width,:height,:alt. The Twitter card issummary_large_image.
Security
- Pin
postcssto^8.5.10via npmoverridesto clear GHSA, XSS via unescaped</style>in PostCSS's CSS stringify output (Dependabot alert #1, moderate). The vulnerable version (8.4.31) was pulled in transitively by Next.js 16.2.6; the override forcespostcss@8.5.14. PostCSS runs only at build time in Next.js, so rendered behaviour does not change. Verified withnpm audit(0 vulnerabilities) and a cleannext build.
[0.0.3] - 2026-05-16
Added
/privacyand/termspages. Both are required by the App Store, Play Store, and AppGallery to accept any submission, so they ship before any product surface enters review. Implemented as a Next.js App Router route group atapp/(legal)/with a sharedlayout.js(sticky header → home, footer pointing at the canonical compliance docs) and a dedicatedlegal.module.cssstylesheet (long-form typography, max-width 760px, callout block, accessible tables).- The rendered text mirrors the canonical markdown in
log-documentation/06-compliance/privacy-policy.mdandterms-of-service.md. Effective dates are explicitly stated as "to be set at v1.0 launch", the pages are live for store-submission discoverability before the policies become binding. - Footer of the landing page now links to
/privacy/and/terms/. Usesnext/linkso trailing-slash export routing stays consistent. - Per-page
metadata.title+metadata.descriptionfor SEO and for the store-review crawl that looks for a discoverable privacy URL.
Notes
- Static export verified:
next buildemitsout/privacy/index.htmlandout/terms/index.htmlas plain pre-rendered files. No client-side JS required for either page. - Route group
(legal)is URL-invisible, final paths are/privacy/and/terms/, the URLs the store consoles will want.
[0.0.2] - 2026-05-16
Fixed
- Correct project domain on the landing page. The Download section incorrectly listed
app.livingongrace.comfor the PWA; the canonical domain islivingongrace.app(marketing site) /app.livingongrace.app(PWA). Theapp.prefix sat next to.cominstead of.app. Fixed inapp/page.js. README "Domain (planned)" line corrected to match.
[0.0.1] - 2026-05-16
Added
- Initial Next.js 16 scaffold in plain JavaScript per ADR-015. App Router. Static export via
output: 'export'innext.config.mjs. The production site is pre-rendered HTML/CSS/JS and hostable on any static provider. - Landing page (
app/page.js) with: brand mark + sticky nav, hero ("A quiet companion for spiritual health"), three "surfaces" cards (Mobile / Web / Desktop), three "principles" (Offline-first / Quiet by design / Yours), download section listing the four surfaces and their status, and a footer linking to every sibling repo. - Design tokens in
app/globals.css: Ivory / Graphite / Grace Gold palette, mood accents, spacing scale, radii, motion, fonts. Mirrors mobiletheme/tokens.js, the web app, and the desktop renderer'stokens.cssvalue-for-value. - Light + dark mode via
prefers-color-scheme, includingtheme-colormeta for the address bar (exported fromviewport, notmetadata, per Next.js 16). - Reduced-motion respected via
prefers-reduced-motion. - LOG repo-family conventions: MIT
LICENSE,VERSIONING.md,CHANGELOG.md,CONTRIBUTING.md,CODE_OF_CONDUCT.md,SECURITY.md, GitHub issue + PR templates,.gitignore. - Release notes index at
docs/release-notes/.
Notes
- Deliberately omitted from v0.0.1: analytics, cookie banner, blog, sitemap.xml, robots.txt, OG image, real download links. Each is its own small follow-up release.
- The page renders without any client-side JS. Next.js will hydrate later when interactive elements arrive; for now, the full site is server-rendered HTML.