Changes in version 1.2.0 New features - New favicon_png (and favicon_png_sizes) fields for social_meta(), write_manifest(), and init_meta(). Add a PNG fallback alongside an SVG favicon: Chromium-based browsers (Chrome, Edge, Comet, etc.) don't render SVG favicons in the address bar and fall back to a generic globe icon without one, even though the browser tab shows the SVG correctly. favicon_png_sizes defaults to "32x32". - Added openai_image_generator(), a ready-made generator for generate_assets() that calls OpenAI's image API (gpt-image-1 by default) and returns the generated image bytes. It is shinyseo's only built-in generator: OpenAI's image API is a clean fit for this job (one endpoint, one request shape, raster bytes back), and the httr package it needs is an optional Suggests dependency loaded only when the constructor is called. Other LLM vendors are welcome as community-contributed generators -- see the new "Contributing a generator" section in LLM.md for the shape a contribution should take. Notably, Claude/Anthropic has no image-generation API (it can see images but not generate them), so no "Claude generator" is shipped or planned as a parallel to the OpenAI one. Changes in version 1.1.0 New feature - Added generate_assets(), which fills in a missing favicon, apple_touch_icon, or image by calling a caller-supplied generator function. shinyseo does not integrate with any particular LLM or image-generation service itself -- generator is the caller's own function, written against whatever API they already have access to (OpenAI, Adobe Firefly, a local model, and so on). This keeps the package free of any vendor dependency, API key, or running cost of its own. Changes in version 1.0.2 Bug fix - read_meta() (used internally by social_meta(), write_manifest(), and init_meta()) now decodes the YAML file as raw UTF-8 bytes instead of going through yaml::read_yaml()'s readLines()-based reader. Under a non-UTF-8 locale (LC_CTYPE=C, common on minimal servers/CI runners), the old reader silently stopped at the first non-ASCII character (e.g. Norwegian "æøå"), dropping every field after it with no warning or error. Changes in version 1.0.1 Improvements - init_meta() now reads an existing meta file (if any) and shows its current values as defaults for each prompt, so pressing Enter keeps what's already there instead of clearing it. Changes in version 1.0.0 First stable release. The API (social_meta(), update_meta(), write_manifest(), init_meta(), and the meta field names) is now considered stable. Changes in version 0.2.0 New features - init_meta(path) — interactively answer a few questions at the console and write the result to a meta.yml file, so new users can get started without reading the field reference first. - update_meta(session, title, description, url, image) — update metadata reactively from the server without a page reload. Useful for multi-tab and multi-route apps. social_meta() now injects the JavaScript handler automatically; no extra setup required. - write_manifest(meta, path, display, start_url, background_color) — generate a www/manifest.json web app manifest from the same metadata object used by social_meta(). Call once in global.R. - Favicon and PWA fields in social_meta(): - favicon + favicon_type → with automatic MIME type detection from file extension - apple_touch_icon → - manifest → - theme_color → - short_name → used by write_manifest() for the manifest short_name - apple_mobile_web_app_capable → and , so the app runs standalone when added to a phone's home screen - apple_mobile_web_app_title → - apple_mobile_web_app_status_bar_style → - Custom meta tags via the custom field — a list of lists where each inner list's keys map directly to HTML attributes on a tag. Supports both name= and property= style tags. Changes in version 0.1.1 (2026-06-03) Documentation - Rewrote all documentation from Norwegian to English. Changes in version 0.1.0 (2026-04-29) First CRAN release - Released on CRAN as shinyseo. - Reached 158 downloads early on. - Was ranked 32nd among the newest CRAN packages in the public tracking list.