{
  "about": "What nanofile.app claims about the NanoFile apps, so the apps can test it.",
  "verified": "2026-08-28",
  "recheck_after": "2026-12-26",
  "contract": "Values under about:app were verified against the app's source by the session that owns it. Values under about:site are derived from this repository at build time. `printed` is quoted from the page and is checked on every build here, so a claim in this file is on the site verbatim.",
  "silence": "The agreement is that the app tells this site when a value changes. That promise fails quietly rather than loudly, so /help prints the verified date to the reader and says so once it is past recheck_after. A release on the app side with no diff is the thing to notice.",
  "stale": "If a value here disagrees with the app, the site is wrong and should be told. Nothing in this repository can detect that on its own.",
  "claims": [
    {
      "id": "site.text-extensions",
      "about": "site",
      "value": 16,
      "printed": "On this website, sixteen",
      "page": "/help",
      "note": "Derived from TEXT_EXTENSIONS in lib/markdown.ts, not typed out.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "site.lint-rules",
      "about": "site",
      "value": 16,
      "printed": "",
      "page": "/markdown-checker",
      "note": "Derived from LINT_RULE_IDS in lib/lint.ts. No page prints the number; the app runs this same linter, so the count is published for their brief rather than for a reader. Fourteen is the answer you get counting add() calls and missing the two after-pass rules.",
      "url": "https://nanofile.app/markdown-checker"
    },
    {
      "id": "app.extensions",
      "about": "app",
      "value": 91,
      "printed": "Ninety-one extensions",
      "page": "/help",
      "note": "Everything this site opens, the app opens. The reverse is not true.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.dot-files",
      "about": "app",
      "value": 15,
      "printed": "fifteen dot-files",
      "page": "/help",
      "note": ".gitignore, .zshrc and the rest.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.bare-names",
      "about": "app",
      "value": 21,
      "printed": "twenty-one bare names",
      "page": "/help",
      "note": "README, Dockerfile, Makefile and the rest, with no extension at all.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.code-extensions",
      "about": "app",
      "value": 56,
      "printed": "fifty-six code extensions",
      "page": "/help",
      "note": "Extensions, not languages. .cc, .cpp, .cxx and .hpp are one language between them.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.highlight-languages",
      "about": "app",
      "value": 35,
      "printed": "thirty-five highlighted languages",
      "page": "/help",
      "note": "The pair 56 and 35 is the one the app's store description had to be corrected on.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.exports",
      "about": "app",
      "value": [
        "markdown",
        "html",
        "word",
        "pdf"
      ],
      "printed": "Out: markdown, HTML, Word and PDF through the print panel",
      "page": "/help",
      "note": "The website goes wider. RTF and plain text are website-only.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.word-export-extension",
      "about": "app",
      "value": "doc",
      "printed": ".doc rather than a .docx",
      "page": "/help",
      "note": "Deliberate on their side: what comes out is HTML that Word opens, and .doc is the honest extension for it. The website writes a real .docx.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.imports",
      "about": "app",
      "value": [
        "docx",
        "pdf",
        "xlsx"
      ],
      "printed": "In: PDF, Word and Excel",
      "page": "/help",
      "note": "CSV, JSON and HTML are not converted in the app. They are opened and shown as what they are.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.csv-becomes-table",
      "about": "app",
      "value": "true",
      "printed": "a CSV or a TSV becomes a real table",
      "page": "/help",
      "note": "Everything else in the data group is coloured code, on both sides.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.views",
      "about": "app",
      "value": [
        "document",
        "source",
        "split"
      ],
      "printed": "Document is the page as it reads",
      "page": "/help",
      "note": "Command-1, 2 and 3. Stacked on a phone, side by side on iPad and Mac.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.search-max-file-mb",
      "about": "app",
      "value": 4,
      "printed": "Files over 4 MB are skipped",
      "page": "/help",
      "note": "Folder search walks the folder each time and keeps no index.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.search-max-file-bytes",
      "about": "app",
      "value": 4194304,
      "printed": "",
      "page": "/help",
      "note": "The same limit as app.search-max-file-mb, in the unit the app states it in, so the two records compare without arithmetic. Not printed: 4 MB is what a reader wants.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.search-max-hits",
      "about": "app",
      "value": 300,
      "printed": "stops at 300 hits",
      "page": "/help",
      "note": "Past that the answer is a narrower query rather than a longer list.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.folder-check-markdown-only",
      "about": "app",
      "value": "markdown",
      "printed": "looks at the markdown files only",
      "page": "/help",
      "note": "Markdown rules over a .swift would cry wolf on every line. The single-document check runs on whatever is open.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.wiki-link-extensions",
      "about": "app",
      "value": [
        ".md",
        ".markdown",
        ".txt"
      ],
      "printed": "gets .md, .markdown and .txt tried in that order",
      "page": "/help",
      "note": "Beside the document first, then the open folder, case-insensitively.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.has-in-app-purchase",
      "about": "app",
      "value": false,
      "printed": "There is no purchase in the app",
      "page": "/help",
      "note": "Dropped on 28 August 2026, one day after Pro became a Mac-only purchase and two after the folder line was drawn. The pair that used to live here, app.pro-sold-on and app.pro-unlocks-on, described where to buy something that is no longer for sale. This is the single fact most of the prose about the app depends on, which is why it is guarded rather than merely written down: selling coming back would invalidate more sentences than any number ever could.",
      "url": "https://nanofile.app/help"
    },
    {
      "id": "app.has-generators",
      "about": "app",
      "value": "none",
      "printed": "The generators are here only",
      "page": "/help",
      "note": "What the app has instead is a formatting bar of nine actions whose table button inserts an empty two by two skeleton. Word, character and line counts exist as a readout under the open document, which is not the same as having the word counter.",
      "url": "https://nanofile.app/help"
    }
  ]
}