Repository: sindresorhus/sindresorhus.github.com Branch: main Commit: 6311d853d37e Files: 159 Total size: 742.6 KB Directory structure: gitextract_c4ya43z6/ ├── .editorconfig ├── .gitattributes ├── .github/ │ └── workflows/ │ └── deploy.yml ├── .gitignore ├── AGENTS.md ├── astro.config.js ├── license ├── note-to-self.md ├── package.json ├── public/ │ ├── CNAME │ ├── apps/ │ │ └── heic-converter/ │ │ └── heic-example.heic │ ├── feedback/ │ │ └── index.html │ └── keybase.txt ├── readme.md ├── source/ │ ├── components/ │ │ ├── apps/ │ │ │ ├── AppsByPlatform.astro │ │ │ ├── AppsCategory.astro │ │ │ └── AppsList.astro │ │ ├── blog/ │ │ │ ├── List.astro │ │ │ ├── ListItem.astro │ │ │ ├── Pagination.astro │ │ │ ├── Post.astro │ │ │ └── Tags.astro │ │ ├── core/ │ │ │ ├── MetaTags.astro │ │ │ └── ToggleMenu.astro │ │ └── widgets/ │ │ ├── Announcement.astro │ │ ├── Footer.astro │ │ ├── Header.astro │ │ ├── HeaderLink.astro │ │ ├── OverflowMenu.astro │ │ ├── PressQuotes.astro │ │ └── RelatedApps.astro │ ├── config.mjs │ ├── content/ │ │ ├── apps/ │ │ │ ├── actions.md │ │ │ ├── ai-actions.md │ │ │ ├── aiko.md │ │ │ ├── amazing-ai.md │ │ │ ├── any-text.md │ │ │ ├── app-buddy.md │ │ │ ├── ask-ai.md │ │ │ ├── battery-indicator.md │ │ │ ├── black-out.md │ │ │ ├── blear.md │ │ │ ├── camera-preview.md │ │ │ ├── caprine.md │ │ │ ├── command-x.md │ │ │ ├── dato.md │ │ │ ├── day-progress.md │ │ │ ├── default-browser.md │ │ │ ├── doodle-draw.md │ │ │ ├── ds-store-inspector.md │ │ │ ├── favorites-widget.md │ │ │ ├── floating-clock.md │ │ │ ├── folder-peek.md │ │ │ ├── gifski.md │ │ │ ├── googly-eyes.md │ │ │ ├── heic-converter.md │ │ │ ├── hyperduck.md │ │ │ ├── icon-preview.md │ │ │ ├── imago.md │ │ │ ├── jiffy.md │ │ │ ├── lungo.md │ │ │ ├── memo-widget.md │ │ │ ├── menu-bar-calendar.md │ │ │ ├── menu-bar-spacing.md │ │ │ ├── menu-drop.md │ │ │ ├── one-task.md │ │ │ ├── one-thing.md │ │ │ ├── online-check.md │ │ │ ├── pandan.md │ │ │ ├── pasteboard-viewer.md │ │ │ ├── photo-widget.md │ │ │ ├── plain-text-editor.md │ │ │ ├── plash.md │ │ │ ├── pure-paste.md │ │ │ ├── quick-launch.md │ │ │ ├── quickgpt.md │ │ │ ├── randa.md │ │ │ ├── recordia.md │ │ │ ├── scratchpad.md │ │ │ ├── second-clock.md │ │ │ ├── shareful.md │ │ │ ├── short-run.md │ │ │ ├── shortcutie.md │ │ │ ├── simple-color-palette.md │ │ │ ├── spaced.md │ │ │ ├── speediness.md │ │ │ ├── supercharge.md │ │ │ ├── system-color-picker.md │ │ │ ├── text-lens.md │ │ │ ├── today.md │ │ │ ├── touch-bar-simulator.md │ │ │ ├── utc-time.md │ │ │ ├── velja.md │ │ │ ├── week-number.md │ │ │ └── zone-bar.md │ │ └── blog/ │ │ ├── empathy-in-open-source.md │ │ ├── goodbye-nodejs-buffer.md │ │ ├── issue-bumping.md │ │ ├── micro-benchmark-fallacy.md │ │ ├── shortcutie-setapp.md │ │ └── small-focused-modules.md │ ├── content.config.ts │ ├── data/ │ │ └── apps-extra.json │ ├── env.d.ts │ ├── layouts/ │ │ ├── BaseLayout.astro │ │ ├── BlogLayout.astro │ │ ├── MarkdownLayout.astro │ │ ├── PageLayout.astro │ │ └── SimplePageLayout.astro │ ├── pages/ │ │ ├── 404.astro │ │ ├── [...apps]/ │ │ │ ├── [slug]/ │ │ │ │ ├── privacy-policy.astro │ │ │ │ ├── release-notes.astro │ │ │ │ └── rss.xml.js │ │ │ └── [slug].astro │ │ ├── [...blog]/ │ │ │ ├── [...page].astro │ │ │ ├── [slug].astro │ │ │ └── _[tag]/ │ │ │ └── [...page].astro │ │ ├── _apps-extra.astro │ │ ├── _apps-heatmap.astro │ │ ├── about.md │ │ ├── apps/ │ │ │ ├── affiliates.md │ │ │ ├── archived.astro │ │ │ ├── discounts.md │ │ │ ├── faq.md │ │ │ ├── free.astro │ │ │ ├── ios.astro │ │ │ ├── macos.astro │ │ │ ├── menu-bar.astro │ │ │ ├── older-versions.astro │ │ │ ├── paid.astro │ │ │ ├── random.astro │ │ │ ├── setapp.astro │ │ │ ├── shortcuts.astro │ │ │ ├── terms.md │ │ │ ├── visionos.astro │ │ │ └── watchos.astro │ │ ├── apps.astro │ │ ├── contact.astro │ │ ├── donate.md │ │ ├── feedback.astro │ │ ├── feeds.astro │ │ ├── index.astro │ │ ├── og/ │ │ │ └── [slug].png.js │ │ ├── repos.md │ │ ├── rss-apps.xml.js │ │ ├── rss-repos.xml.js │ │ ├── rss.xml.js │ │ ├── supporters.md │ │ └── tiny-apps.md │ └── utils/ │ ├── apps.js │ ├── permalinks.js │ ├── posts.js │ ├── rehype-kbd-separator.js │ ├── remark-heading-meta.js │ ├── remark-inject-feedback-faq.js │ ├── remark-inject-feedback-faq.test.js │ └── utils.js ├── styles/ │ └── global.css └── tsconfig.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true [*] indent_style = tab end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.yml] indent_style = space indent_size = 2 ================================================ FILE: .gitattributes ================================================ * text=auto eol=lf ================================================ FILE: .github/workflows/deploy.yml ================================================ name: Deploy on: push: branches: - main workflow_dispatch: schedule: - cron: '0 0 * * *' # Runs every night at midnight UTC jobs: build: permissions: contents: read runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: withastro/action@v5 deploy: needs: build permissions: pages: write id-token: write runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 ================================================ FILE: .gitignore ================================================ node_modules yarn.lock /dist /.output *.sublime-project *.sublime-workspace .astro .cache ================================================ FILE: AGENTS.md ================================================ # Codebase Notes ## FAQ Suggestions on /feedback The feedback page shows relevant FAQ links as the user types their message. ### Data sources - **General FAQs** — a curated subset of `source/pages/apps/faq.md` headings, filtered by slug via `feedbackFaqSlugs` in `feedback.astro`. - **App-specific FAQs** — all FAQ headings from the selected app's markdown file (via `?product=` URL param), passed through `faqHeadings` in `apps.js`. ### Heading metadata (``) Any markdown heading with a `{#id}` can be annotated with directives on the lines immediately below: ```md ### The app does not show up in the menu bar {#app-not-showing-in-menu-bar} ``` - Parsed by the `remarkHeadingMeta` plugin (`source/utils/remark-heading-meta.js`), which runs after `remarkCustomHeaderId` so heading IDs are already set. - Injected into `file.data.astro.frontmatter.headingMeta` and accessed in `feedback.astro` as `faqMd.frontmatter.headingMeta`. - Values are always arrays (split on whitespace). - Multiple directives per heading work by looking back past consecutive `` nodes to find the owning heading. - The `@faq.` namespace is consumed by the feedback page. Other namespaces can be added for future uses. **`@faq.keywords`** — extra words that make a FAQ matchable by queries that don't use the same words as the heading text. **`@faq.platforms`** — restricts the FAQ to apps that support at least one of these platforms. FAQs without this annotation are shown for all apps. ### Matching algorithm (`feedback.astro`, second `