GreenGale User GuideAbout GreenGale is a blogging platform built on AT Protocol. Blog content uses Markdown formatting, as well as other special formatting as outlined later in this document. GreenGale is WhiteWind compatible—you can read and write WhiteWind content from GreenGale, and WhiteWind and GreenGale posts are both featured in the feeds and on user profiles. GreenGale is compatible with the Standard Site ecosystem for publishing and indexing. Standard Site is optional on GreenGale, which uses its own records as well as Standard Site records for cross-platform discoverability if enabled, which point to the corresponding GreenGale records. Enable or disable this feature per-account as well as per-post. The semantic + keyword search in GreenGale searches all content accross WhiteWind, GreenGale, and Standard Site. External content (not from WhiteWind or GreenGale) will open a plain text preview, with a link to view that post on its origin site. This User Guide This is a living document and will be updated as the feature set changes, as well as in response to user feedback and questions. Please feel free to contact @greengale.app on Bluesky with any inquiries. --- Logging In Log in to GreenGale using your AT Protocol account. Find the login button in the bottom of the sidebar on the left. After entering your username, you will be brought to the OAuth page. GreenGale requests scoped permissions for only the relevant record types. All PDSes and did:web accounts are supported. If you have trouble logging in with your account, please contact @greengale.app on Bluesky or open an issue on GitHub. Features Home Page The home page features a search bar and a 'feeds' section. The feeds include: - Recents: shows recent posts from all accounts on GreenGale and WhiteWind, in reverse chronological order - Following: available when logged in, shows recent posts from GreenGale, WhiteWind, and the Standard Site ecosystem from accounts that you follow on Bluesky - Network: shows recent posts in reverse chronological order from all accounts on the Standard Site ecosystem Profile Pages A user's profile page in GreenGale shows all their blog posts and documents from GreenGale, WhiteWind, and the Standard Site ecosystem, as well as a link to their Bluesky profile. RSS You can subscribe to an RSS feed of blog posts from a user using the RSS link on their profile page. This feed will include the GreenGale-native formats, WhiteWind and GreenGale. If they have content on other platforms (e.g. Leaflet), subscribe on that platform. Search GreenGale features semantic and keyword search that covers all WhiteWind, GreenGale, and external Standard Site content. - Semantic: vector search over text embeddings that searches for what you meant, and terms with similar meanings - Keyword: SQL search for words that most closely match the exact text you typed in the search bar By default, both types of matches are included in the search results, merged with reciprocal rank fusion. You can also choose one or the other, as well as specify a date range and author handle. The search algorithms cover accounts, publications, titles, subtitles, tags, and content. External Content Previews External Standard Site content shown in the search results will be shown in a preview viewer, which includes the stripped plain text content of the post, up to 3000 characters. This is to give you a good idea of whether you've found what you're looking for. To see the full content with its native styling and other features like embeds, click the link to navigate to the source in a new tab. Editor View Modes There are a few different ways to view your post as you write it. By defualt, you'll get the single-column editor layout with title, subtitle, and content fields. The editor content is shown as unformatted plain text. Click the 'Split' button to switch to a two-column view, where the formatted content is shown to the right as you type. You can also click Preview to see how the formatted content will look before publishing. Images Images can be inserted using drag-and-drop from your computer, or opening the file chooser using the 'Add Image' button. Images over 1MB will be resized and compressed to under 1MB, using a dynamic scaling algorithm and AVIF encoder for optimal quality, targeting a size as close to 1MB as possible without going over. This will usually be between 400KB-950KB. Images are represented in the body of your post by a markdown reference. While the encoder does its work, you'll see a placeholder, which is replaced with the actual image reference once it's been uploaded. Uploaded images will be found in the 'Uploaded Images' section below the content. Here, you can add accessibility alt text to images, add content moderation labels, and delete images. Note that deleting the reference to an image does not actually delete the image from your PDS, and deleting the image using the delete button does not actually delete the reference from your post. Check the preview or use split mode to make sure your images will look how you want them to before publishing. If you accidentally delete or modify an image reference in your post, you can click the copy button to copy the reference for that image, and paste it back into your post. Below the content and images, you can find additional options detailed below. Post options Post Format There are two post formats available: GreenGale and WhiteWind. GreenGale is recommended for most users. Use WhiteWind if you want your post to also be available on WhiteWind. This option is provided for users who want to use the GreenGale frontend while staying in the WhiteWind ecosystem. Visibility There are three visibility options: - Public: the post will be shown on the home page, your profile page, and to anyone with the link. - Unlisted: the post will not be shown on the home page or your visitors to your profile page, but is available to anyone with the URL. - Private: the post is only shown to you when logged in. Note: All content on your personal data server (PDS) is publicly accessible. The non-public visibility settings are respected by the GreenGale frontend, and are intended for work-in-progress/draft content or quickly sharing documents with a few people, that you don't want to show to all greengale.app visitors. This platform should never be used for personal information that you don't want to exist on the internet. Publish to Standard Site Enabling this option will create a Standard Site record in addition to the GreenGale record for your post. This will make it visible on other platforms that use the standard.site lexicon. Note that this is only available when the visibility is set to public. Themes Themes in GreenGale are defined using three to four colors: background, text, accent, and code background (optional). Background and text are self-explanatory. Accent is used for links, buttons, and the site logo in the top-left corner. Behind the scenes, eleven total colors are derived from these selections using OKLCH, but you don't need to worry about that. The theme affects the entire site while being used—there is no self-contained box of theme colors. By default, and for WhiteWind and unthemed posts, you'll get the green theme with light and dark modes available. Preset and custom themes override this. There are seven preset themes, in addition to fully customizable themes. Themes are verified for WCAG contrast standards before publication, so you can't create a low-contrast theme that's difficult to read. Theme Application Themes are defined in a few different places: per post, per blog, and by the reader. As an author, you can pick a theme from the presets or custom options in the post editor. You can also choose a blog theme in the 'Edit Publication' menu on your profile page. If you do, that theme will be used by default for new posts (you can always override it with something else). After creating a custom theme, it will be saved in your browser's local storage for easy access. Up to 10 recent custom themes are available in the theme picker. As a reader, you can choose to view posts in either the author's chosen theme, or override it with your preferred theme. Your theme preferences can be found by clicking the 'expand' arrow next to your username in the sidebar. If you set a theme this way, the 'Use Preferred Style'/'Use Post Style' button allows you to toggle between the author-defined theme and your defined theme. Tables of Contents GreenGale features a floating TOC at the right side of blog posts. The TOC entries are derived from Markdown headings H1 through H6. As an author, if you use headings in a post, the TOC will automatically be generated. As a viewer, you can click a heading in the TOC to scroll to that section of the post. Bluesky Comments Blusky posts linking to a GreenGale post will be displayed at the bottom of that post on GreenGale in the Discussions from the Network section, along with replies to those posts. This serves as a comments section on GreenGale. To start a discussion that will be shown on GreenGale, post a link to that post on Bluesky. A button to do so is conveniently provided at the bottom of each GreenGale post. It may take 30-60 minutes for new Bluesky comments to become visible on GreenGale. Text-to-Speech GreenGale features TTS built-in using the current state of the art on-device transformer-based speech synthesis model. This feature can be accessed from the 'Listen' button at the top of every post. Using TTS for the first time on a given browser will download the Kokoro TTS model from Hugging Face into your local storage. Inference is then run locally on your computer. GreenGale TTS has limitations. Currently, it only supports English. This is a limitation of Kokoro, the underlying speech synthesis model. It works best with paragraph-formatted content. Code is skipped. Tables are unlikely to be synthesized in a helpful way. As the TTS model reads the blog content, the current paragraph will be highlighted. You can also click a paragraph to seek to that section in the audio. This feature uses a fuzzy matching algorithm to match text to the current position of the voice, so it may have flaws where the wrong section of the text is highlighted briefly. Options for TTS include selections of voice, pitch, and speed, as well as enable/disable auto-scrolling for the paragraph highlighting. Computers and browsers that fully support WebGPU and Transformers.js will use GPU acceleration for TTS. Currently, this is limited to Macs with Chromium-based browsers or Safari. Other devices will fall back to running the model on the CPU using WASM. This is slower, but it works smoothly after you wait for an initial buffering period. On mobile devices, TTS will probably cause the page to crash. A fix for this issue is in the works from upstream. Special Rendering In addition to Markdown, GreenGale automatically parses and renders the following data formats when included in post content. You can mix and match these with Markdown, all will be parsed and rendered. Bluesky Posts Bluesky posts are automatically parsed and embedded in your blog posts. To embed a Bluesky post, just paste the link. It will automatically be converted to an embed in the viewer. @ Mentions Atmosphere handles consisting of the @ symbol followed by a domain name will be automatically parsed and made clickable. Clicking a handle takes you to the profile page for that user. SVG To post an SVG, use a fenced code block with as the language tag, and paste the SVG source code. Most common SVG features are supported including animations, but some may be filtered out by the sanitizer. If a non-malicious SVG does not render as expected, please let developer @3fz.org know about it, or open an issue on GitHub. Mathematical Expressions TeX content is rendered using the KaTeX library. Use dollar-sign notation to include it in your post, with single dollar signs for inline math, an
Jan 23, 2026