Wiki Title Wiki Description Home Page All Pages (default) About (about)Downloads (downloads)Legacy Downloads (legacy_downloads)Features (features)Known Limitations (known_limitations)Feather Wiki Tools (tools)Learn (learn)Wiki Settings (wiki_settings)Navigating (navigating)Creating a New Wiki (creating_a_new_wiki)Create A Page (create_a_page)Editing Pages (editing_pages)Upgrading (upgrading)FAQs & Tips (faqs)Markdown Support (markdown_support)Advanced Pages (advanced_pages)Inspiration (inspiration)Gallery (gallery)Extensions (extensions)Search (extensions_search)Upgrade Feather Wiki (extension_upgrade)Auto-Save (extensions_auto-save)View Fullsize Image (extensions_view_fullsize_image)HTML To Markdown (extensions_html_to_markdown)Transclusion / Page Insert (extensions_transclusion)Marked.js Replacement (extensions_marked-js_replacement)Data Import/Export (extensions_import-export)Clone Page (extensions_clone_page)Full Search (extension_full_search)Simple Navigation (extensions_simple_navigation)Toggle Menu (extension_toggle_menu)Auto Table of Contents (extensions_auto_table_of_contents)SunEditor Replacement (extensions_suneditor_replacement)Extension Development (development)Tutorial (extensions_tutorial)Documentation (documentation_intro)Global Objects (global_objects)FW.state (fw-state)FW.emitter (fw-emitter)Helper Functions (helper_functions)Publishing (publishing)Autolinker (extensions_autolinker)Word Count (extensions_wordcount)Translation (translation) Page Order about downloads legacy_downloads features known_limitations tools learn wiki_settings navigating creating_a_new_wiki create_a_page editing_pages upgrading faqs markdown_support advanced_pages inspiration gallery extensions extensions_search extension_upgrade extensions_auto-save extensions_view_fullsize_image extensions_html_to_markdown extensions_transclusion extensions_marked-js_replacement extensions_import-export extensions_clone_page extension_full_search extensions_simple_navigation extension_toggle_menu extensions_auto_table_of_contents extensions_suneditor_replacement development extensions_tutorial documentation_intro global_objects fw-state fw-emitter helper_functions publishing extensions_autolinker extensions_wordcount translation Custom CSS .uc{line-height:1.5em} .uc :is(h2,h3,h4,h5,h6){margin-top:1rem} .uc aside{border-left:3px solid #ccc;padding-left:10px;margin-left:10px} .uc code{background:#efefef;padding:3px 5px} .bl a[target="_blank"]:after{content:unset} @media (prefers-color-scheme:dark) { html,#featherSearchResults{background:#16191e!important} html,button,button.chg,button.del, input,select,option,textarea, .sb,.ed-actionbar,.ed-button,.ed-content, summary:is(.np,.b), h1,h2,h3,h4,h5,h6,.t, #featherSearchResults a{color:#bbbdc2!important} a{color:#87c} .sb,textarea,input,select,option,.ed-actionbar,.ed-content{background:#1a1f25} .uc pre,.uc code{background:#2C333E} .sb,.ed-actionbar{border-bottom-color:#2C333E} textarea,input,select,.ed,.ed-content{border-color:#21262f} .ed-sel{background:#6b7078} .tabs>*{border-color: #2C333E} } Custom JS Only runs once on wiki load. To test, save wiki & load that file. const { state, emitter } = FW; // fetch recent updates if on About page state.updatePosts = []; fetchUpdatePosts(); ['DOMContentLoaded', 'render'].forEach(ev => { emitter.on(ev, () => { setTimeout(() => renderUpdatePosts(), 50); }); }); emitter.emit('DOMContentLoaded'); async function fetchUpdatePosts() { if (state.updatePosts.length) return; try { const json = await fetch('https://floss.social/api/v1/accounts/109977425260352838/statuses?limit=12&exclude_replies=1', { method: 'GET', mode: 'cors', headers: { 'Authorization': 'Bearer bRGz9dJymhifUzxxpOPoRc0KPmSAE_bIrsLmykXAi_8', }, }).then(r => r.json()); state.updatePosts = json?.filter(p => p.in_reply_to_id === null).slice(0, 5) ?? []; if (state.pg?.id === state.p.home) emitter.emit('render'); } catch (e) { console.error(e); } } function renderUpdatePosts() { if (state.pg?.id !== state.p.home) return; const container = document.getElementById('updatesContainer'); if (!container) return; container.style.maxHeight = '350px'; container.style.overflowY = 'auto'; state.updatePosts.forEach(p => { const postId = p.id; if (!container.querySelector(`[id='${postId}']`)) { const isReblog = p.reblog !== null; let post; if (isReblog) post = p.reblog; else post = p; const date = (new Date(post.created_at)).toLocaleString(); const el = html`<article id="${postId}" class=pb><header><a href="${post.url}" title="See post in context" target="_blank" rel="noopener noreferrer">${date}</a>${isReblog ? html`<br><i>Reblogged from <a href="${post.account.url}" title="${post.account.acct}" target="_blank" rel="noopener noreferrer">${post.account.display_name}</a></i>` : ''}</header>${html.raw(FW.inject.out(post.content))}</article>`; container.appendChild(el); } }); if (!container.querySelector('footer')) { container.appendChild(html`<footer style="text-align:center;">${html.raw(FW.inject.out('<a href="https://floss.social/@FeatherWiki"><button>See All</button></a>'))}</footer>`); } } Custom Head Add HTML directly to head element. To test, save wiki & load that file. Be careful! Malformed HTML will break wiki. <link rel=icon href=favicon.ico> <link rel="canonical" href=https://feather.wiki/> <meta name=robots content="index, follow"> <script src="./extensions/v1.8.x/feather-search.js"></script> Include Static HTML Include the wiki content in plain HTML for non-JS browsers. Nearly doubles output size. Publish Hides Save, New Page, & Wiki Settings buttons. Manually visit settings to unset this: ?page=s Update Feather Wiki Version: 1.8.0 (Skylark) Import & Overwrite with Other Feather Wiki file Embedded Images