datalog-theme 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +127 -0
- data/CITATION.cff +2 -2
- data/README.md +4 -2
- data/_data/i18n/en.yml +55 -3
- data/_data/i18n/es.yml +55 -3
- data/_data/i18n/pt.yml +55 -3
- data/_includes/analytics/dashboard.html +24 -9
- data/_includes/components/academic-dashboard.html +168 -133
- data/_includes/components/author-bio.html +7 -5
- data/_includes/components/author-list.html +6 -5
- data/_includes/components/citation-tools.html +2 -1
- data/_includes/components/content-provenance.html +19 -1
- data/_includes/components/correction-report.html +15 -8
- data/_includes/components/hero.html +22 -15
- data/_includes/components/package-index.html +121 -0
- data/_includes/components/package-install.html +27 -50
- data/_includes/components/post-list.html +14 -0
- data/_includes/components/responsive-image.html +15 -21
- data/_includes/footer.html +1 -1
- data/_includes/head.html +70 -11
- data/_includes/layouts/default/article.html +76 -46
- data/_includes/meta/dataset-json.html +171 -0
- data/_includes/meta/math-config.html +15 -1
- data/_includes/meta/package-json.html +69 -0
- data/_includes/meta/person-json.html +36 -13
- data/_includes/meta/publisher.html +15 -0
- data/_includes/meta/schema.html +108 -23
- data/_includes/meta/scholarly.html +10 -5
- data/_includes/post/related-posts.html +17 -43
- data/_includes/scripts.html +2 -2
- data/_includes/search/index-data.json +10 -1
- data/_includes/search/page.html +11 -6
- data/_layouts/archive.html +67 -0
- data/_layouts/dataset.html +2 -1
- data/_layouts/default.html +13 -11
- data/_layouts/docs.html +53 -0
- data/_layouts/home.html +30 -1
- data/_layouts/notebook.html +5 -1
- data/_layouts/package.html +38 -21
- data/_layouts/portfolio.html +1 -0
- data/_layouts/post.html +21 -62
- data/_layouts/project.html +2 -1
- data/_layouts/research.html +14 -2
- data/_plugins/analytics_dashboard.rb +4 -1
- data/_plugins/archive.rb +114 -0
- data/_plugins/authors.rb +50 -1
- data/_plugins/citation_exports.rb +12 -1
- data/_plugins/config_validator.rb +77 -2
- data/_plugins/correction_fallback.rb +110 -0
- data/_plugins/image_optimizer.rb +129 -22
- data/_plugins/math_preprocessor.rb +7 -48
- data/_plugins/notebook_converter.rb +44 -5
- data/_plugins/packages.rb +84 -0
- data/_plugins/page_dates.rb +37 -0
- data/_plugins/references.rb +16 -2
- data/_plugins/related_posts.rb +149 -0
- data/_plugins/search_sections.rb +110 -0
- data/_plugins/site_identity.rb +42 -0
- data/_plugins/social_cards.rb +17 -0
- data/_sass/_academic-dashboard.scss +18 -30
- data/_sass/_base.scss +2 -0
- data/_sass/_components.scss +21 -23
- data/_sass/_docs.scss +143 -0
- data/_sass/_features.scss +6 -0
- data/_sass/_layout.scss +65 -6
- data/_sass/_mathematical.scss +61 -19
- data/_sass/_notebooks.scss +1 -32
- data/_sass/_package-docs.scss +6 -9
- data/_sass/_post-components.scss +23 -23
- data/_sass/_print.scss +1 -1
- data/_sass/_search-page.scss +75 -0
- data/_sass/_search.scss +17 -26
- data/_sass/_syntax-highlighting.scss +23 -1
- data/_sass/_theme.scss +1 -0
- data/_sass/_utilities.scss +87 -40
- data/_sass/_variables.scss +31 -29
- data/assets/css/main.scss +2 -1
- data/assets/js/dist/academic.js +1 -1
- data/assets/js/dist/analytics-dashboard.js +1 -1
- data/assets/js/dist/chunks/chunk-TNVD6UAM.js +1 -0
- data/assets/js/dist/comments.js +1 -1
- data/assets/js/dist/contact.js +1 -1
- data/assets/js/dist/core.js +1 -1
- data/assets/js/dist/corrections.js +5 -1
- data/assets/js/dist/loader.js +1 -1
- data/assets/js/dist/math.js +2 -1
- data/assets/js/dist/moderation.js +1 -1
- data/assets/js/dist/reactions.js +1 -1
- data/assets/js/dist/search.js +1 -1
- data/assets/js/dist/sources.json +20 -16
- data/assets/js/dist/subscriptions.js +1 -1
- data/assets/js/loader.js +6 -2
- data/lib/datalog/audit/checks.rb +269 -0
- data/lib/datalog/audit/known_keys.rb +61 -0
- data/lib/datalog/audit/site_reader.rb +118 -0
- data/lib/datalog/audit/source_file.rb +85 -0
- data/lib/datalog/audit.rb +145 -0
- data/lib/datalog/citations/bibtex.rb +200 -0
- data/lib/datalog/citations/entry.rb +333 -0
- data/lib/datalog/citations/markup.rb +79 -0
- data/lib/datalog/cli.rb +164 -89
- data/lib/datalog/critical_css.rb +126 -21
- data/lib/datalog/latex_speech/words.json +88 -0
- data/lib/datalog/latex_speech.rb +355 -0
- data/lib/datalog/packages/command.rb +51 -0
- data/lib/datalog/packages/refresh.rb +187 -0
- data/lib/datalog/packages.rb +177 -0
- data/lib/datalog/plugin_system.rb +5 -0
- data/lib/datalog/plugins/citations.rb +325 -109
- data/lib/datalog/site_config.rb +26 -0
- data/lib/datalog/social_cards/font.rb +286 -0
- data/lib/datalog/social_cards/fonts/IBMPlexSans-Regular.ttf +0 -0
- data/lib/datalog/social_cards/fonts/IBMPlexSerif-SemiBold.ttf +0 -0
- data/lib/datalog/social_cards/fonts/OFL.txt +92 -0
- data/lib/datalog/social_cards/geometry.rb +51 -0
- data/lib/datalog/social_cards/outline.rb +54 -0
- data/lib/datalog/social_cards/plain_text.rb +258 -0
- data/lib/datalog/social_cards/template.rb +322 -0
- data/lib/datalog/social_cards/template.svg +17 -0
- data/lib/datalog/social_cards/typesetter.rb +178 -0
- data/lib/datalog/social_cards.rb +369 -0
- data/lib/datalog/theme/updater.rb +307 -0
- data/lib/datalog/theme/version.rb +1 -1
- metadata +44 -7
- data/_includes/components/enhanced-code-block.html +0 -212
- data/_includes/components/performance-monitor.html +0 -170
- data/_includes/components/viz-table-fallback.html +0 -19
- data/_plugins/datalog_bibliography.rb +0 -21
- data/assets/js/dist/chunks/chunk-WIRUK3OZ.js +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0a6f608b10a3157fb14d9f0c48112f37f53f1772fd824871dd092c22384b9312
|
|
4
|
+
data.tar.gz: 7c60b3bcc2a41c04d48b7975169d75de86f53e589ed0aa228ec026f6c7151484
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 846cd1d47b6a4e711d210411765137c459cd047f8787d559021e353317614d7033f61ade9e05502eb46b8c51fc56324999df7ff0b7442f82ade3b3dc0693b831
|
|
7
|
+
data.tar.gz: 4d1bd2d991ffdaa7d7c867aa4994b8010471658eba5fee85619585643db2f6ec34a1c49e278fab8081e48e05032fb56b39b3f552096e9a2b00b8dadce6517a18
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,133 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
4
4
|
|
|
5
|
+
## [0.11.0] - 2026-10-04
|
|
6
|
+
|
|
7
|
+
### Upgrading from 0.10.x
|
|
8
|
+
|
|
9
|
+
These change what an existing site shows. Each names the setting that keeps the old behaviour, where there is one:
|
|
10
|
+
|
|
11
|
+
- **A first visit is dark.** A site without `theme_options.color_scheme.default` used to follow the operating system; set `default: system` to keep that (#374).
|
|
12
|
+
- **Display equations are plain, and only the ones the text can refer to are numbered.** Set `theme_options.math.display_style: card` and `theme_options.math.numbering: all` for the old cards and numbers (#318).
|
|
13
|
+
- **The author and editorial note follows the article.** `theme_options.provenance.position: start`, or `provenance_position` in a post's front matter, puts it back before the body (#317).
|
|
14
|
+
- **A page lists only the works it cites.** A page that cites none listed every entry; add `nocite: all` to keep the full list (#289).
|
|
15
|
+
- **Related posts are ranked by relevance**, so a post may recommend different ones. `related_posts` in `_config.yml` tunes the ranking, and a post's front matter can name its own picks (#294).
|
|
16
|
+
- **A post shows its `summary` under its title**, where the heading repeated its first paragraph; a post without one shows none. Pages with a header of their own (packages, datasets, projects, notebooks, research articles, the home page) no longer get a date, a byline and the build time as "Published" above it (#411).
|
|
17
|
+
|
|
18
|
+
These need an edit, or can stop a build:
|
|
19
|
+
|
|
20
|
+
- **Three components are gone:** `components/enhanced-code-block.html`, `components/performance-monitor.html` and `components/viz-table-fallback.html`. A site that includes one gets a build error naming it; remove the include (#355).
|
|
21
|
+
- **Citation keys are checked.** A cited key that no source has, or that two entries share, stops the build and names the page and the key. In `{% datalog_cite key label %}` the second word is now a second key, not a label (#289).
|
|
22
|
+
- **An error raised in a plugin hook stops the build.** A `Jekyll::Errors::FatalException` from a hook was logged as a warning (#289).
|
|
23
|
+
- **`datalog critical-css` runs critical 9.** It needs Node.js 22.13, and Playwright's Chromium for the default `render` engine (`npx playwright install chromium`); `critical_css.engine: static` needs no browser. Remove `critical_css.penthouse_options`, which the build now warns about. A site whose own `node_modules` holds critical 8 needs to update it, and the command says how (#360).
|
|
24
|
+
|
|
25
|
+
One more to know about, needing no edit: `$dark-ink-200` and `$dark-ink-100` are now slate greys that read on dark surfaces. A site that uses them in its own styles gets the new colours, and one that sets them keeps its own (#415).
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- **The maths editor's preview names what it draws** (#422).
|
|
30
|
+
- **The name:** the preview is a live region, so a screen reader announces what is drawn in it. Its expression had no name, so what was announced was its MathML flattened to text: "σ 2 + E [X]" for `\sigma^2 + \mathbb{E}[X]`. It now gets `role="math"` and the name the rest of the page would give it ("sigma squared + double-struck E [X]"), or its `% alt:` comment, and the name follows each change.
|
|
31
|
+
- **A "<" in the LaTeX:** `renderLatex` set the LaTeX as HTML, so `a<b` began a tag and nothing was drawn; the preview showed, and announced, "\[a". It now sets it as text.
|
|
32
|
+
- **Search previews:** the maths previews in search results are drawn the same way, and stay unnamed and out of the tab order, since the LaTeX beside them is what is read (#365).
|
|
33
|
+
|
|
34
|
+
- **The maths toolkit starts whichever script loads second** (#421).
|
|
35
|
+
- **The bug:** MathJax's `ready()` started the toolkit only if `math.js` had already loaded, and the loader imports `math.js` after `DOMContentLoaded` while MathJax loads `async`. With MathJax in the browser's cache it was often ready first, and then nothing started the toolkit: no expression got its tab stop, its name on the rendered formula, or its copy and edit tools.
|
|
36
|
+
- **Now:** `math.js` starts the toolkit itself when it arrives after MathJax's `ready()`, and the toolkit starts once either way. Its options (`numbering`) now sit in the MathJax configuration, under `datalog`, so both sides read the same ones.
|
|
37
|
+
|
|
38
|
+
- **A formula's screen-reader name says what the formula says** (#417).
|
|
39
|
+
- **The bug:** the build and the browser derived the name from the LaTeX by spelling out a few commands and replacing every other one with a space. So `f : [a, b] \to \mathbb{R}` was named "f : [a, b] R", `c \in (a, b)` "c (a, b)", and `\pi`, `\sin` and the Greek letters vanished. Spacing commands and `\label` keys were read out, and `\square` became "Mathematical expression".
|
|
40
|
+
- **Now:** both read the LaTeX as words from one table (`lib/datalog/latex_speech/words.json`). Theorem 1 reads "f: [a, b] to double-struck R", and `\lim_{x \to 0}` reads "limit as x approaches 0". Fractions and roots nest, and a command with no word of its own is read by its name. Sizing, spacing, `\label`, the equation number from `\tag` and the names of environments such as `equation` or `align` are left out of the name; a matrix or `cases` is announced, as "matrix … end matrix".
|
|
41
|
+
- **Overrides:** a `% alt:` comment still names an expression, and the configuration guide now documents it.
|
|
42
|
+
|
|
43
|
+
- **A notebook page shows its title once.** Most notebooks open with their title as a `# Title` heading, and the page showed it again straight under its own `<h1>`, as an `<h2>` in a cell box of its own. When the first Markdown cell opens with a heading that is the page's title, that heading is now left out, and a cell that held nothing else isn't drawn. A heading that says something else, and the rest of that cell, stay (#416).
|
|
44
|
+
- **Text that kept the light theme's colour in dark mode now meets AA contrast.** The axe sweep missed all of it: the notebook page wasn't in the sweep, axe leaves text over the notebook header's gradient undecided, and it passes over single characters such as punctuation (#415).
|
|
45
|
+
- **Notebook page:** the header's values and summary, and the sidebar's counts and execution details, were dark grey on the dark panel at 2.1:1. The header's label was indigo at 2.3:1. They now use the dark theme's secondary ink and accent. A cell's code and outputs sat on a lighter wash than the cell, which put an output's text at 4.2:1 and a chart's warning at 2.9:1. They now sit a shade darker than the cell, as in light mode. In light mode, the header's tags were purple on their own tint at 4:1, and now use a darker purple, `$color-accent-tertiary-text`.
|
|
46
|
+
- **Code:** 14 Rouge token colours had no dark colour and kept the light one, about 2:1 on the dark code background. They are punctuation, HTML tags, constants, symbols, variables, regular expressions, deleted lines and error output. Each now has a dark colour.
|
|
47
|
+
- **Palette:** `$dark-ink-200` and `$dark-ink-100` were warm greys left from an older palette, at 2.3:1 and 1.7:1 on the dark page. They are now slate greys that read at 4.5:1 or more on every dark surface.
|
|
48
|
+
- **Removed:** five notebook output styles that nothing writes (`--stream`, `--error`, `__trace`, `__figure` and `--widget`).
|
|
49
|
+
- **A click on a formula no longer collapses part of it**, nor takes away its focus, its place in the tab order, its role or its label. MathJax's collapsible setting was on: it wrapped parts of an expression in toggles, so a click meant to select or copy a formula collapsed part of it to ◂…▸ ("Let f : ◂ ▸ be twice continuously differentiable"). MathJax then drew the expression again into a new container with none of what the theme gives an expression. The setting is now off (#412).
|
|
50
|
+
- **Menu changes:** MathJax also draws every expression again when a reader changes a setting in its menu, including turning collapsing back on. A render action in the theme's MathJax configuration now gives each new container its tab stop, role, label and LaTeX back, and the focus to the one that had it, without adding a second link after an equation reference. It sits in the configuration because the menu builds a new MathJax document for some settings, which would lose an action added later.
|
|
51
|
+
- **The default layout's heading no longer repeats or invents a date, an author and a summary** above every layout's own (#411).
|
|
52
|
+
- **Posts:** a post showed its date and author twice, as bare lines under the title and again in its own row. It now shows them once, and under its title the `summary` its author wrote, where the heading had repeated the post's first paragraph.
|
|
53
|
+
- **Layouts with their own header:** package, dataset, project, portfolio, notebook, research and home pages show nothing above it but the site header. Before, they showed a "summary" taken from their first paragraph (on the demo, "Installation" or "Key artifacts"), a byline, and the time of the build labelled "Published". A research article no longer has two `<h1>`s.
|
|
54
|
+
- **Dates:** no page shows the time of the build or of the checkout as its publication date. Jekyll gives an undated document the build's time, and the notebook converter gave a notebook without an execution time its file's, which is the checkout's. Neither reaches the page, the JSON-LD, the citation meta tags, or a citation and its BibTeX, RIS and EndNote exports any more. A citation takes the date it is given, else the page's real date, else its `updated` or `last_updated` date where the layout passes one, and otherwise has no year.
|
|
55
|
+
- **Microdata:** the heading is no longer a `ScholarlyArticle` microdata item around every page. That item contradicted the JSON-LD of the home page, the archives, packages and datasets, and gave a post a second item of another type. A post's own `TechArticle` item now carries its headline.
|
|
56
|
+
- **Layouts and plain pages:** `article_meta: false` is how a layout or a page leaves the date and authors to itself, as `show_title: false` leaves it the `<h1>` and the summary under it. A research article shows its `summary` under its own title. A plain page's date and authors are labelled, in the post row's style.
|
|
57
|
+
- A package page in a language other than Python or R had an "Installation" heading over an empty panel. It now shows the Git tab when the page has a `github_url`, and no panel otherwise. The Git tab's `cd` now names the directory the clone makes, which is the repository's name; it used the package's. The buttons of a package or project card wrap onto a second line rather than squeezing their labels into two (#290).
|
|
58
|
+
- The citations plugin escapes every value it writes into the page. The in-text link took `url` straight into `href`, and the list took the formatted entry and the title unescaped. Only an `http(s)` address or a DOI becomes a link now (#289).
|
|
59
|
+
- The academic dashboard (`components/academic-dashboard.html`) works, and the demo renders it at `/academic/` in place of a hand-written English copy. Nothing had rendered it, and it had decayed:
|
|
60
|
+
- its profiles never appeared, because a `for` loop cannot filter its own collection;
|
|
61
|
+
- it carried a second `h1`, and a heading for each section even when the data had nothing for it;
|
|
62
|
+
- its metrics were `dt`/`dd` pairs outside any `dl`, and the bibliography box had no label;
|
|
63
|
+
- the bibliography entries were joined with a literal `\n\n`, and date-only calendar events read "00:00".
|
|
64
|
+
|
|
65
|
+
Citations by year now keep the numbers `_data/academic.yml` gives and draw each bar against the busiest year. The script used to replace them with the publications generator's series, which counts citations by the year of publication, and it set a width CSS cannot read, so no bar showed. The submission and calendar filters now load `academic.js` even on a dashboard without citation metrics. The profile links carry `rel="me"`, like the author card's. A map passed as `academic` supplies the metrics too, and `docs/components.md` documents the component and its data (#355).
|
|
66
|
+
- `datalog update` no longer stops at "already at" when a path-installed theme is already at the release asked for. It answered before checking anything, so a checkout whose script bundles were never built reported success, and `--build` built nothing. It now rebuilds the bundles when they are missing or were built from other sources, runs the same site checks as after an update, and builds the site with `--build`; `--dry-run` says which of these it would do. The exit status is still 0 (#295).
|
|
67
|
+
- A reader who reaches the contact, subscription or correction form before its script has loaded is now told when the service does not take it. Each form asked the service only on the reader's first focus, or for a correction report when its panel opened; on a slow connection that had already happened before the script was listening, so the form stayed ready until the reader sent it and was refused. The check now runs at once when focus is already inside the form or the panel is already open. The same race failed the contact form's browser test on a slow CI runner.
|
|
68
|
+
- Search results are an ordinary list again, so a screen reader can reach what is inside them. Each result was an `option` in a `listbox`, a role whose children are presentational, which put the title link and the matching-section links of every result out of reach in browse mode. The arrow keys now move real focus through the results rather than pointing `aria-activedescendant` at them, Tab reaches them as it reaches any link, Enter follows the focused link, and Escape from the list returns to the query without clearing it (#365).
|
|
69
|
+
- The search results meet AA contrast in both themes. The query highlight took its colour from the card around it, which in dark mode put light grey on a light amber wash at 2.26:1; the tag and difficulty chips sat at 4.32:1 on their own tint; the loading text kept the light theme's grey on the dark surface at 3.27:1. The highlight now takes its colour from the wash it sits on, and the chips and the loading text have dark-mode colours of their own (#365).
|
|
70
|
+
- Code and LaTeX previews in a search result can be scrolled from the keyboard, and the rendered maths beside the LaTeX is `inert`, so it is neither a focus stop nor announced twice (#365).
|
|
71
|
+
- `datalog update`, `datalog check` and `datalog critical-css` read `_config.yml` as Jekyll does. The update's site checks loaded it with a YAML loader that allowed no dates, so a configuration with a date in it (`launched: 2024-01-01`) stopped the update with a `Psych::DisallowedClass` error after the theme checkout had already moved; and all three commands failed on a YAML alias, which Jekyll accepts. One loader now serves the three, allowing dates, times and aliases (#295).
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
|
|
75
|
+
- **Share cards.** With `theme_options.social_cards.enabled`, the build draws a 1200×630 PNG for each post that names no image of its own. The card shows the title, the series or subtitle, the authors and date, the site's name and logo, and a research article's venue and DOI, on the theme's colours. `og:image` and `twitter:image` point at it, with its width, height and alt text, and so does the JSON-LD `image`. Before, every post without an `og_image` was shared with `social.default_image`.
|
|
76
|
+
- **Precedence:** `og_image` or `image` in front matter wins, then the card, then the default image. `social_card: false` asks for none.
|
|
77
|
+
- **Drawing:** ImageMagick draws the cards, as it draws the image variants. The text is set in IBM Plex Serif and Sans, which the gem now ships under the SIL Open Font License, and drawn as outlines, so no font is looked up and Ubuntu's ImageMagick 6 and Windows' ImageMagick 7 draw the same pixels. TeX in a title reads as text ("α-stable laws for X_t²"), and a title of 140 characters fits whole.
|
|
78
|
+
- **Caching and degrading:** cards are kept in `.jekyll-cache/datalog-social-cards`, keyed by what they show, so an unchanged page draws nothing on the next build. Without ImageMagick the build warns once and every page keeps the default image.
|
|
79
|
+
- **Settings:** `scheme` (dark or light, both AA for every text colour), `background`, `logo`, `template` (an SVG of the site's own) and `collections`. `docs/configuration-guide.md` documents them and the tools to install. The demo draws a card for each of its posts (#297).
|
|
80
|
+
- **Package pages know their registries.** A package names them in `registry:` (`pypi`, `conda_forge`, `cran`, `crates`, `rubygems`, `npm`, `julia`), and each gives its link and an install tab: `cargo add` with a docs.rs link, `gem install` with the Gemfile line, `npm install` and `Pkg.add`, beside pip, conda, CRAN and Git. `docs_url` adds a Documentation link, and `status` (alpha, beta, stable) shows beside the version. `pypi_url` and `cran_url` still work.
|
|
81
|
+
- **`bundle exec datalog packages refresh`** reads each package's latest release from PyPI, crates.io, RubyGems, CRAN (through crandb) and npm into `_data/package_releases.yml`: the version, release date and licence, the language version it needs, and whether it is a pre-release (by the registry's own rules: PEP 440, semver or RubyGems) or yanked. The layout shows that release before the front matter's `version`, and the build stays offline. A registry that cannot be read stops the command with exit 1 before the file is touched.
|
|
82
|
+
- **`components/package-index.html`** lists every package as cards or a table, with its release, install command and purpose, optionally grouped by `language` or any other field. The demo's `/packages/` is that include.
|
|
83
|
+
- **JSON-LD:** a package page describes its package as `SoftwareSourceCode`, with its repository, language, version, licence, author and registry pages.
|
|
84
|
+
- `docs/components.md` documents the front matter, the command and the index (#290).
|
|
85
|
+
- **`bundle exec datalog audit`** reports, with the file and line of each finding, what the theme's newer authoring features would improve. It reads the site through Jekyll's reader and never builds or writes it. `docs/scripts-reference.md` describes each check.
|
|
86
|
+
- **Opportunities** (advice): statements typed as bold "**Theorem**" or "**Definition**"; "Figure 3" typed by hand; posts that look like parts of a series; posts linking a repository, notebook or DOI with no reproducibility block; posts edited long after publication with no revision entry; hand-written reference lists.
|
|
87
|
+
- **Problems** (warnings, exit 1 with `--strict`): front matter keys that nothing in the theme or the site reads, with the known keys taken from the sources rather than kept as a list; images without alt text; links to pages the site does not build; `math` switched against a post's content.
|
|
88
|
+
- **Options:** `--format json` or `markdown`, `--only`, `--path`; `audit.known_keys`, `audit.ignore_links` and `audit.revision_after_days` in `_config.yml`.
|
|
89
|
+
- **Demo:** its first run found dead front matter, which is now removed: `hero:` on eleven posts, pointing at images that do not exist, and `nav_exclude:`, a Just the Docs field, on four pages (#296).
|
|
90
|
+
- **Citations work like `{% ref %}`.**
|
|
91
|
+
- **Sources:** a page names a BibTeX (`.bib`) or CSL-JSON (`.json`) file in `bibliography`, or the site does in `citations.bibliography`. Entries in front matter still work.
|
|
92
|
+
- **Tags:** `{% cite key %}`, `{% cite a b %}` and `{% cite key p="12" %}` become "[1]", "[2, 3]" and "[1, p. 12]", each linked to its entry. With `citations.style: author-year` (or `citation_style` on a page) they read "(Rubin 1987)".
|
|
93
|
+
- **The list:** the article ends with the cited works in citation order (numeric) or by author and year, each entry with its DOI or address as a link and a link back to each place it is cited. `nocite` lists works the text does not cite.
|
|
94
|
+
- **Errors:** a key no source has, or one two entries share, stops the build and names the page and the key.
|
|
95
|
+
- **Metadata:** on a research article, each cited work is a `citation_reference` meta tag and a `CreativeWork` in the JSON-LD `citation`.
|
|
96
|
+
- **Plugin:** it no longer needs `datalog-search`, and adds the cited keys to the index only when search is on. The BibTeX subset is read without a dependency, and the words are translated in English, Portuguese and Spanish. `docs/user-guide.md` has a worked example and `docs/components.md` the reference (#289).
|
|
97
|
+
- An `archive` layout for year, tag, category and curated topic pages, with jump lists, counts per section, localized dates, optional month sections and series grouping for topics, sharing `components/post-list.html` (compact, dated and teaser variants) with the rest of the theme. The starter template includes `/archives/years/`, `/tags/` and `/categories/`; `datalog new archive --type year|tag|category|topic` scaffolds another; a site whose archives live elsewhere sets `tag_archive.path` and `category_archive.path` so tag and category links reach them (#293).
|
|
98
|
+
- Posts offer a way to report an error on a site without dynamic services: a link to a pre-filled GitHub or GitLab issue, labelled with `corrections.issue_labels` and saying before the reader follows it that the issue is public, or an email to `contact_email` (else `author.email`). `corrections.fallback` chooses `issue`, `email` or `none`, and by default takes the issue link when `repository` is a GitHub or GitLab address. The link works without JavaScript; with it, the section and the selected passage are added. The form still takes over wherever the service offers corrections (#292).
|
|
99
|
+
- `datalog update` updates a theme installed from a Git submodule or a local path: it moves the checkout to the latest stable release tag, or the one `--to` names, refuses a checkout with local changes, rebuilds the script bundles, installs the site's gems, prints the release's Removed, Changed and Deprecated notes, and stages the new submodule pointer without committing. `--dry-run` says what it would do and `--build` builds the site into a temporary directory first. It exits 0 when already current, 2 after an update and 1 on failure; installs from RubyGems update as before (#295).
|
|
100
|
+
- The home layout's hero is a contained panel with up to two actions (`hero_cta_label` and `hero_cta_url`, `hero_secondary_cta_label` and `hero_secondary_cta_url`), and `home_features` in the home page's front matter lists feature cards with a title, description and link. The latest posts and portfolio sections are left out when their collections are empty, and a hero background image is preloaded only when one is configured (#375).
|
|
101
|
+
- `layout: docs` gives a guide a section sidebar, drawn from optional `docs` groups in `_data/navigation.yml`, an on-page contents list and links to the previous and next guides; guides share the posts' code-copy control. The documentation site uses it, with search, the colour toggle, a homepage that leads to installation, and a technical authoring guide (#376, #379, #380).
|
|
102
|
+
- The dynamic features have a backend to deploy. [datalog-services](https://github.com/DiogoRibeiro7/datalog-services), a separate repository outside the gem, implements every route of the dynamic-services contract as a Cloudflare Worker with a D1 database, with an OpenAPI description of the contract, a conformance suite any backend can run against a base URL, and a deployment guide. `docs/dynamic-services.md` links all four, and its prose reference deployment is now only what they leave out; `docs/moderation.md` and `docs/components.md` point at the service where they described one (#291).
|
|
103
|
+
- The site can describe itself to search engines. With `site_identity` in `_config.yml` (`true`, or a map with `name` and `alternate_names`), the homepage carries a `WebSite` node with the site's name, other names and URL, which is what Google reads as a site's name, and the publisher in full: the author's `Person` or the `Organization`. `og:site_name` follows the same name. A page with `schema_type: ProfilePage` is now a real profile page: its `mainEntity` is its author (or the publisher, with `main_entity: publisher`) and it is `isPartOf` the website, where the type alone used to change nothing else. The author's `Person` reads `alternate_name`, `job_title` or `roles`, the avatar, `bio`, `knows_about` (or `expertise`, `research_areas`) and a `same_as` list, for every author whose record has them. The site's author and the publisher carry stable `@id`s (`/#person`, `/#organization`) on every page, so an article's author, its publisher and the homepage's person are one entity rather than one per page; this adds an `@id` to the JSON-LD of every page, and a guest gets none. `seo_title_suffix: false` drops the ` | site title` from a page's `<title>`, and a string replaces the site title there. The JSON-LD description already followed the meta description's order (`seo_description`, `description`, excerpt, site description), which a test now holds. Off by default, so a site with its own `WebSite` block does not get two (#322).
|
|
104
|
+
- The site author's profile links say `rel="me"`, so IndieAuth, Mastodon's verified links and other identity checks can connect the site to its owner's accounts, as the JSON-LD `sameAs` already did. It covers the author card's GitHub, Twitter/X, LinkedIn, ORCID and Google Scholar links, each author's ORCID link in the research layout, and the footer's ORCID link, which all follow one rule: `me noopener noreferrer` for the site's own author, `noopener noreferrer` for anyone else, so a guest's profiles are never claimed as the owner's. `profile_rel` on `author` in `_config.yml`, or on a `_data/authors.yml` record, replaces `me` for that person; `noopener` and `noreferrer` are always kept. The footer's ORCID link gains `noreferrer`, which it lacked (#323).
|
|
105
|
+
- A page in `_datasets/` now carries `schema.org/Dataset` structured data, which is what Google Dataset Search indexes; the `WebPage` description a dataset page had could not reach it. The title, summary, `updated`, `license` and field `schema` it already declares fill most of it in, and `doi`, `keywords`, `temporal_coverage`, `spatial_coverage`, `measurement_technique`, `citation`, `is_accessible_for_free` and a `distributions` list are read when present. A dataset with no `date:` claims no publication date rather than the build time (#334).
|
|
106
|
+
- Figures can carry a dark companion. Put `power-dark.png` beside `power.png` and it becomes a `<source media="(prefers-color-scheme: dark)">` at the front of the same `<picture>`, with its own resized copies and modern formats; the `<img>` keeps the light file, its alt text and its dimensions, so the figure is described once. `{% figure %}` takes `dark_src` for a companion that does not follow the convention, as does any `<img data-dark-src="...">`, including one the variant pipeline never reads, such as an SVG. `theme_options.images.dark_suffix` changes the suffix, and `""` turns the convention off. `prefers-color-scheme` follows the operating system and the theme's toggle does not, so `core/dark-mode.js` overrules the query on those sources whenever a reader has chosen a mode for the site; with JavaScript off the figures follow the system. A page's `hero_image` gets the same treatment, through `components/responsive-image.html`, which now builds its `srcset`s with the same code the optimizer uses rather than three copies of its own (#335).
|
|
107
|
+
- Search results link to the section of a page the query was found in, not just to the page. A result is still one entry per page, with at most three matching sections listed under it, each an anchor to the heading itself; the excerpt now comes from the section's own text. The sections are taken from the page's own `h2` and `h3` at build time, using the ids kramdown already gives them, so there is nothing to write in front matter. A page with no headings indexes as one section, as every page did before; the text before the first heading is never offered as a section of itself; a heading with no id still indexes and links to the page; and the split runs over the document's own content, so the headings a layout puts around an article are not sections of every result. An index generated without sections, by an older build or a site's own template, still searches. The repeated text takes `search.json` from 32 KB to 39 KB served compressed on the demo site, and a budget assertion holds it there (#336).
|
|
108
|
+
|
|
109
|
+
### Changed
|
|
110
|
+
|
|
111
|
+
- **`datalog critical-css` runs critical 9.** critical 9 rewrote its command line, and the command's `--base`, `--css` and `--penthouse-*` options stopped it with "Unknown option '--base'". The theme's `devDependency` and the `npx` fallback move together, so the theme and the sites using it run the same version.
|
|
112
|
+
- **How pages reach it:** each page goes to critical on its standard input, from the built site's root, with `assets/css/main.css` as its only stylesheet. The inlined CSS still carries no Google Fonts rules, now whatever the site's `baseurl`. The viewports are one `--dimensions` list.
|
|
113
|
+
- **Engines:** `critical_css.engine: render`, the default, measures the first screen in Playwright's Chromium at each viewport, as critical 8 did in Puppeteer's Chrome. critical 9 does not download that browser: install it with `npx playwright install chromium`, or let the command install it when it runs critical through `npx`. `engine: static` needs no browser and writes more CSS. On the demo, render's CSS is a quarter to a half larger than critical 8's (4.3 to 6.3 KB gzipped against 3.5 to 4.0 KB), because critical 9 keeps the media queries of every viewport it measures.
|
|
114
|
+
- **Checks:** the command names a Node.js older than 22.13, which critical 8 needed as well, and a site whose own `node_modules` holds critical 8, with the command that updates it.
|
|
115
|
+
- **Removed:** `critical_css.penthouse_options`: critical 9 has no penthouse, and the build now warns while the setting is there. The Tests, Deploy and Lighthouse workflows install Playwright's Chromium before they run critical. The unit tests now run the installed critical with the theme's arguments, so a refused option fails there as well as in the consumer test (#360).
|
|
116
|
+
|
|
117
|
+
- **A page lists only the works it cites.** The citations plugin listed every entry of a page that cited none of them; `nocite: all` restores that.
|
|
118
|
+
- **Research layout:** its `references:` list of strings is no longer read as citation entries (a list of maps still is), and it shows the cited works in its References section.
|
|
119
|
+
- **JSON-LD:** `citation` lists the cited works, not the page's own `citation_key`.
|
|
120
|
+
- **The old tag:** `{% datalog_cite key label %}` is now an alias of `{% cite %}`, so a second word is a second key rather than a custom label.
|
|
121
|
+
- **Plugin errors:** a `Jekyll::Errors::FatalException` raised in a plugin hook now stops the build instead of being logged as a warning (#289).
|
|
122
|
+
- **Display equations are set plain, and only the ones the text can refer to are numbered.** Each display equation was a bordered, shadowed card, 106 px tall around a 16 px formula, and every one was numbered. An equation now stands on its own line with a `1.25rem` margin and adds nothing to the page but its height and margins; its copy and edit tools appear at the end of its line when the pointer or the focus reaches it, and stay in the tab order. MathJax numbers what amsmath numbers (`equation`, `align`, `gather` and the rest, not their starred forms) and any `$$…$$` display with a `\label{}`, so `\eqref{}` still finds it, and leaves `$$x = 1$$` unnumbered. To keep the old look and numbering, set `theme_options.math.display_style: card` and `theme_options.math.numbering: all`; `numbering: none` numbers only a `\tag{}` of the author's. The validator accepts only those values. The card's styles are compiled only for a site that asks for it, so a plain site's stylesheet does not grow (#318).
|
|
123
|
+
- **The author and editorial note follows the article.** The note that `why_this_exists`, `evidence`, `methodology` and `reviewed_at` make stood between the topics and the body, a screenful on a phone before the first sentence. It now comes after the body and the reproducibility panel, before the revision history and "How to cite", in the document and so for screen readers and in print as well as on screen. A row of the metadata, "Author and editorial note", says when the article was reviewed and links to it. `theme_options.provenance.position: start` puts the note back where it was, and `provenance_position` in a post's front matter chooses for that post (#317).
|
|
124
|
+
- **A first visit is dark.** The palette is indigo and cyan, and a site without `theme_options.color_scheme.default` now opens dark, where it used to follow the operating system. Set `default: system` to keep the old behaviour, or `light`; a reader's choice with the toggle still wins, and dark figure variants follow the mode in effect (#374).
|
|
125
|
+
- **Related posts are ranked by relevance**, so a site's posts may recommend different ones than before. Shared tags count by how rare they are, then categories and keywords, and the date only breaks ties. `related_posts` in `_config.yml` sets `limit`, `min_score` and `weights` (a `text` weight for shared title and excerpt words is off by default). In a post's front matter, `related_posts` lists picks by URL, path or exact title, shown first; a pick that matches nothing or more than one post stops the build. A post's own series is left out and another series appears at most once; `related: false` keeps a post out of other posts' lists and `related_posts: false` hides the section (#294).
|
|
126
|
+
- The analytics dashboard follows the theme's dark and light palettes, redraws its charts when the mode changes, and offers each chart's values as a table. It tells apart data that is configured, empty, unavailable, not set up and stale: when a refresh from the analytics API fails, the last good data stays on the page marked stale rather than shown as current (#377).
|
|
127
|
+
|
|
128
|
+
### Removed
|
|
129
|
+
|
|
130
|
+
- `components/enhanced-code-block.html`, `components/performance-monitor.html` and `components/viz-table-fallback.html`, which no layout, page or script included. The first two held inline scripts that the Content Security Policy would block. Code blocks get their copy button from the layouts, and `assets/js/visualizations.js` builds the table fallback's template itself when the page has none, which was always. A site that includes one of them gets a build error naming the file. A test now fails when a file in `_includes/components/` is included by nothing the build renders (#355).
|
|
131
|
+
|
|
5
132
|
## [0.10.1] - 2026-09-22
|
|
6
133
|
|
|
7
134
|
### Fixed
|
data/CITATION.cff
CHANGED
|
@@ -16,8 +16,8 @@ abstract: >-
|
|
|
16
16
|
It offers integrated notebook publishing, advanced math rendering, interactive
|
|
17
17
|
visualization workflows, and reproducibility tooling optimised for open science communities.
|
|
18
18
|
license: MIT
|
|
19
|
-
version: 0.
|
|
20
|
-
date-released: 2026-
|
|
19
|
+
version: 0.11.0
|
|
20
|
+
date-released: 2026-10-04
|
|
21
21
|
keywords:
|
|
22
22
|
- data-science
|
|
23
23
|
- jekyll
|
data/README.md
CHANGED
|
@@ -75,7 +75,7 @@ site; the rest is reference content you can copy from.
|
|
|
75
75
|
## Documentation
|
|
76
76
|
|
|
77
77
|
- [Documentation Index](docs/README.md) — every guide, grouped by what you want to do.
|
|
78
|
-
- [Documentation Site](docs/site/README.md) — source for
|
|
78
|
+
- [Documentation Site](docs/site/README.md) — source for a documentation site built with the theme, with feature walk-throughs, interactive demos, and migration guides. It is not published yet; CI builds it and checks it in a browser on every pull request. The live example of the theme is the [demo site](https://diogoribeiro7.github.io/analytics-blog-jekyll/).
|
|
79
79
|
- [User Guide](docs/user-guide.md) — comprehensive documentation covering installation, notebooks, math, visualizations, research workflows, accessibility, performance, and collaboration best practices for DataLog users.
|
|
80
80
|
- [Environment Setup Guide](docs/environment-setup.md) — configure environment variables, secrets, and integrations for analytics, testing, and deployment.
|
|
81
81
|
- [Scripts Reference](docs/scripts-reference.md) — complete reference for all build, test, import/export, and utility scripts.
|
|
@@ -134,6 +134,8 @@ bin/datalog --help
|
|
|
134
134
|
- `bin/datalog new notebook` — create a notebook landing page and starter `.ipynb` in one step.
|
|
135
135
|
- `bin/datalog new project` — scaffold a portfolio entry with metadata and placeholder sections.
|
|
136
136
|
- `bin/datalog check` — validate runtime dependencies, configuration, and optional tooling like Node.js.
|
|
137
|
+
- `bin/datalog audit` — list the posts that would gain from newer authoring features (statements, figures, series, citations) and content problems (unread front matter, images without alt text, broken internal links), with file and line; `--strict` for CI. See [docs/scripts-reference.md](docs/scripts-reference.md#datalog-audit).
|
|
138
|
+
- `bin/datalog packages refresh` — read each package's latest release from its registries (PyPI, crates.io, RubyGems, CRAN, npm) into `_data/package_releases.yml`, which package pages show before their front matter. See [docs/components.md](docs/components.md#package-pages).
|
|
137
139
|
- `bin/datalog publish` — build the site and push the `_site` artifacts to your GitHub Pages branch via git worktrees.
|
|
138
140
|
- `bin/datalog update` — upgrade the `datalog-theme` gem and refresh npm packages when applicable.
|
|
139
141
|
|
|
@@ -208,7 +210,7 @@ Data-driven configuration allows you to publish or reorder projects, datasets, s
|
|
|
208
210
|
Add the theme gem to your Jekyll site:
|
|
209
211
|
|
|
210
212
|
```ruby
|
|
211
|
-
gem "datalog-theme", "~> 0.
|
|
213
|
+
gem "datalog-theme", "~> 0.11.0"
|
|
212
214
|
```
|
|
213
215
|
|
|
214
216
|
The constraint takes the patch releases of the current minor series. Until 1.0 a minor release may include breaking changes, listed in the [changelog](CHANGELOG.md).
|
data/_data/i18n/en.yml
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
date:
|
|
3
3
|
formats:
|
|
4
4
|
long: "%B %-d, %Y"
|
|
5
|
+
month: "%B"
|
|
5
6
|
datetime: "%B %-d, %Y %H:%M"
|
|
6
7
|
months:
|
|
7
8
|
1: January
|
|
@@ -45,6 +46,14 @@ date:
|
|
|
45
46
|
4: Thu
|
|
46
47
|
5: Fri
|
|
47
48
|
6: Sat
|
|
49
|
+
archive:
|
|
50
|
+
jump: Jump to archive section
|
|
51
|
+
count: "({{count}} posts)"
|
|
52
|
+
show_all: "Show all ({{count}} more)"
|
|
53
|
+
series: Series
|
|
54
|
+
parts: "({{count}} parts)"
|
|
55
|
+
articles: Articles
|
|
56
|
+
empty: No articles published yet.
|
|
48
57
|
global:
|
|
49
58
|
skip_to_main: Skip to main content
|
|
50
59
|
math_ready: Mathematical content is ready
|
|
@@ -147,6 +156,8 @@ navigation:
|
|
|
147
156
|
julia: Julia
|
|
148
157
|
javascript: JavaScript
|
|
149
158
|
home:
|
|
159
|
+
features: What you can publish
|
|
160
|
+
explore_more: Explore more
|
|
150
161
|
latest_research: Latest Research Notes
|
|
151
162
|
reading_time_one: 1 min read
|
|
152
163
|
reading_time_many: "{{minutes}} mins read"
|
|
@@ -162,6 +173,14 @@ article:
|
|
|
162
173
|
authors: Authors
|
|
163
174
|
corrections:
|
|
164
175
|
summary: Report an error or suggest a correction
|
|
176
|
+
fallback:
|
|
177
|
+
subject: "Correction: {{title}}"
|
|
178
|
+
article: Article
|
|
179
|
+
url: Address
|
|
180
|
+
prompt: "Describe the error and the suggested correction."
|
|
181
|
+
section: Section
|
|
182
|
+
quote: Selected passage
|
|
183
|
+
public_note: "Issue reports are public. Do not include private information."
|
|
165
184
|
intro: "Spotted a mistake in the mathematics, the facts, a citation, the code or the reproducibility? Say what and where. The report goes to the author, not onto the page."
|
|
166
185
|
category: What kind of problem
|
|
167
186
|
section: Where
|
|
@@ -370,6 +389,16 @@ dynamic_services:
|
|
|
370
389
|
aborted: The request was cancelled.
|
|
371
390
|
retry_after: "Try again in {{seconds}} seconds."
|
|
372
391
|
reference: "Reference: {{id}}"
|
|
392
|
+
citations:
|
|
393
|
+
and: and
|
|
394
|
+
et_al: et al.
|
|
395
|
+
no_date: n.d.
|
|
396
|
+
back: "Back to citation {{n}}"
|
|
397
|
+
locators:
|
|
398
|
+
p: p.
|
|
399
|
+
pp: pp.
|
|
400
|
+
chap: ch.
|
|
401
|
+
sec: sec.
|
|
373
402
|
references:
|
|
374
403
|
figure: Figure
|
|
375
404
|
table: Table
|
|
@@ -390,6 +419,8 @@ post:
|
|
|
390
419
|
evidence: Evidence used
|
|
391
420
|
method: Method
|
|
392
421
|
reviewed: Reviewed
|
|
422
|
+
reviewed_on: "Reviewed {{date}}"
|
|
423
|
+
link: How this article was made
|
|
393
424
|
revisions:
|
|
394
425
|
heading: Revision history
|
|
395
426
|
corrected_on: "Corrected on {{date}}."
|
|
@@ -550,9 +581,6 @@ notebook:
|
|
|
550
581
|
launch_binder: Launch in Binder
|
|
551
582
|
open_colab: Open in Colab
|
|
552
583
|
academic_dashboard:
|
|
553
|
-
header:
|
|
554
|
-
title: Academic integration hub
|
|
555
|
-
description: Monitor publication metrics, synchronize academic profiles, and coordinate submissions, funding, and mentorship opportunities.
|
|
556
584
|
profiles:
|
|
557
585
|
title: Academic profiles & synchronization
|
|
558
586
|
view_profile: View profile
|
|
@@ -565,6 +593,7 @@ academic_dashboard:
|
|
|
565
593
|
featured_projects: Featured projects
|
|
566
594
|
collections: Collections
|
|
567
595
|
auto_update: Auto update
|
|
596
|
+
auto_update_on: "On"
|
|
568
597
|
citations:
|
|
569
598
|
title: Citation metrics
|
|
570
599
|
total: Total citations
|
|
@@ -748,6 +777,15 @@ analytics:
|
|
|
748
777
|
last_updated: Last updated
|
|
749
778
|
last_updated_unknown: "Last updated: pending"
|
|
750
779
|
cache_window: Data cached for 24 hours
|
|
780
|
+
current: Current results
|
|
781
|
+
stale: Cached results
|
|
782
|
+
stale_note: GA4 is unavailable. Showing the last successful cached results.
|
|
783
|
+
setup_needed: Setup needed
|
|
784
|
+
unavailable: Unavailable
|
|
785
|
+
empty: No results yet
|
|
786
|
+
view_data: View data table
|
|
787
|
+
chart_unavailable: Chart unavailable; use the data table below.
|
|
788
|
+
no_chart_data: No chart data available.
|
|
751
789
|
top_posts: Top posts
|
|
752
790
|
search_terms: Search queries
|
|
753
791
|
visitor_trends: Visitor trends
|
|
@@ -785,3 +823,17 @@ package_install:
|
|
|
785
823
|
copy: Copy
|
|
786
824
|
copied: Copied!
|
|
787
825
|
copy_error: Could not copy
|
|
826
|
+
gemfile: Gemfile
|
|
827
|
+
julia_repl: Julia REPL
|
|
828
|
+
packages:
|
|
829
|
+
documentation: Documentation
|
|
830
|
+
prerelease: pre-release
|
|
831
|
+
yanked: yanked
|
|
832
|
+
index:
|
|
833
|
+
title: Packages
|
|
834
|
+
other: Other
|
|
835
|
+
package: Package
|
|
836
|
+
release: Release
|
|
837
|
+
install: Install
|
|
838
|
+
purpose: Purpose
|
|
839
|
+
empty: No packages yet.
|
data/_data/i18n/es.yml
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
date:
|
|
3
3
|
formats:
|
|
4
|
+
month: "%B"
|
|
4
5
|
long: "%d de %B de %Y"
|
|
5
6
|
datetime: "%d de %B de %Y %H:%M"
|
|
6
7
|
months:
|
|
@@ -45,6 +46,14 @@ date:
|
|
|
45
46
|
4: Jue
|
|
46
47
|
5: Vie
|
|
47
48
|
6: Sáb
|
|
49
|
+
archive:
|
|
50
|
+
jump: Ir a la sección del archivo
|
|
51
|
+
count: "({{count}} artículos)"
|
|
52
|
+
show_all: "Mostrar todos ({{count}} más)"
|
|
53
|
+
series: Series
|
|
54
|
+
parts: "({{count}} partes)"
|
|
55
|
+
articles: Artículos
|
|
56
|
+
empty: Aún no hay artículos publicados.
|
|
48
57
|
global:
|
|
49
58
|
skip_to_main: Ir al contenido principal
|
|
50
59
|
math_ready: El contenido matemático está disponible
|
|
@@ -147,6 +156,8 @@ navigation:
|
|
|
147
156
|
julia: Julia
|
|
148
157
|
javascript: JavaScript
|
|
149
158
|
home:
|
|
159
|
+
features: Qué puedes publicar
|
|
160
|
+
explore_more: Explorar más
|
|
150
161
|
latest_research: Notas de investigación recientes
|
|
151
162
|
reading_time_one: Lectura de 1 min
|
|
152
163
|
reading_time_many: "Lectura de {{minutes}} min"
|
|
@@ -162,6 +173,14 @@ article:
|
|
|
162
173
|
authors: Autores
|
|
163
174
|
corrections:
|
|
164
175
|
summary: Informar de un error o sugerir una corrección
|
|
176
|
+
fallback:
|
|
177
|
+
subject: "Corrección: {{title}}"
|
|
178
|
+
article: Artículo
|
|
179
|
+
url: Dirección
|
|
180
|
+
prompt: "Describe el error y la corrección sugerida."
|
|
181
|
+
section: Sección
|
|
182
|
+
quote: Pasaje seleccionado
|
|
183
|
+
public_note: "Los informes mediante incidencias son públicos. No incluyas datos privados."
|
|
165
184
|
intro: "¿Has visto un error en las matemáticas, los hechos, una cita, el código o la reproducibilidad? Di qué y dónde. El informe va al autor, no a la página."
|
|
166
185
|
category: Qué tipo de problema
|
|
167
186
|
section: Dónde
|
|
@@ -370,6 +389,16 @@ dynamic_services:
|
|
|
370
389
|
aborted: La solicitud se canceló.
|
|
371
390
|
retry_after: "Inténtalo de nuevo en {{seconds}} segundos."
|
|
372
391
|
reference: "Referencia: {{id}}"
|
|
392
|
+
citations:
|
|
393
|
+
and: "y"
|
|
394
|
+
et_al: et al.
|
|
395
|
+
no_date: s.f.
|
|
396
|
+
back: "Volver a la cita {{n}}"
|
|
397
|
+
locators:
|
|
398
|
+
p: p.
|
|
399
|
+
pp: pp.
|
|
400
|
+
chap: cap.
|
|
401
|
+
sec: secc.
|
|
373
402
|
references:
|
|
374
403
|
figure: Figura
|
|
375
404
|
table: Tabla
|
|
@@ -390,6 +419,8 @@ post:
|
|
|
390
419
|
evidence: Evidencia utilizada
|
|
391
420
|
method: Método
|
|
392
421
|
reviewed: Revisado
|
|
422
|
+
reviewed_on: "Revisado el {{date}}"
|
|
423
|
+
link: Cómo se hizo este artículo
|
|
393
424
|
revisions:
|
|
394
425
|
heading: Historial de revisiones
|
|
395
426
|
corrected_on: "Corregido el {{date}}."
|
|
@@ -550,9 +581,6 @@ notebook:
|
|
|
550
581
|
launch_binder: Abrir en Binder
|
|
551
582
|
open_colab: Abrir en Colab
|
|
552
583
|
academic_dashboard:
|
|
553
|
-
header:
|
|
554
|
-
title: Centro de integración académica
|
|
555
|
-
description: Supervise métricas de publicación, sincronice perfiles académicos y coordine envíos, financiación y mentorías.
|
|
556
584
|
profiles:
|
|
557
585
|
title: Perfiles académicos y sincronización
|
|
558
586
|
view_profile: Ver perfil
|
|
@@ -565,6 +593,7 @@ academic_dashboard:
|
|
|
565
593
|
featured_projects: Proyectos destacados
|
|
566
594
|
collections: Colecciones
|
|
567
595
|
auto_update: Actualización automática
|
|
596
|
+
auto_update_on: "Activada"
|
|
568
597
|
citations:
|
|
569
598
|
title: Métricas de citación
|
|
570
599
|
total: Total de citas
|
|
@@ -748,6 +777,15 @@ analytics:
|
|
|
748
777
|
last_updated: Última actualización
|
|
749
778
|
last_updated_unknown: "Última actualización: pendiente"
|
|
750
779
|
cache_window: Datos en caché por 24 horas
|
|
780
|
+
current: Resultados actuales
|
|
781
|
+
stale: Resultados en caché
|
|
782
|
+
stale_note: GA4 no está disponible. Se muestran los últimos resultados guardados.
|
|
783
|
+
setup_needed: Configuración necesaria
|
|
784
|
+
unavailable: No disponible
|
|
785
|
+
empty: Aún no hay resultados
|
|
786
|
+
view_data: Ver tabla de datos
|
|
787
|
+
chart_unavailable: Gráfico no disponible; consulta la tabla de datos de abajo.
|
|
788
|
+
no_chart_data: No hay datos para el gráfico.
|
|
751
789
|
top_posts: Entradas destacadas
|
|
752
790
|
search_terms: Consultas de búsqueda
|
|
753
791
|
visitor_trends: Tendencias de visitantes
|
|
@@ -785,3 +823,17 @@ package_install:
|
|
|
785
823
|
copy: Copiar
|
|
786
824
|
copied: ¡Copiado!
|
|
787
825
|
copy_error: No se pudo copiar
|
|
826
|
+
gemfile: Gemfile
|
|
827
|
+
julia_repl: REPL de Julia
|
|
828
|
+
packages:
|
|
829
|
+
documentation: Documentación
|
|
830
|
+
prerelease: prelanzamiento
|
|
831
|
+
yanked: retirada
|
|
832
|
+
index:
|
|
833
|
+
title: Paquetes
|
|
834
|
+
other: Otros
|
|
835
|
+
package: Paquete
|
|
836
|
+
release: Versión
|
|
837
|
+
install: Instalación
|
|
838
|
+
purpose: Para qué sirve
|
|
839
|
+
empty: Todavía no hay paquetes.
|
data/_data/i18n/pt.yml
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
date:
|
|
3
3
|
formats:
|
|
4
|
+
month: "%B"
|
|
4
5
|
long: "%d de %B de %Y"
|
|
5
6
|
datetime: "%d de %B de %Y %H:%M"
|
|
6
7
|
months:
|
|
@@ -45,6 +46,14 @@ date:
|
|
|
45
46
|
4: Qui
|
|
46
47
|
5: Sex
|
|
47
48
|
6: Sáb
|
|
49
|
+
archive:
|
|
50
|
+
jump: Ir para a secção do arquivo
|
|
51
|
+
count: "({{count}} artigos)"
|
|
52
|
+
show_all: "Mostrar todos (mais {{count}})"
|
|
53
|
+
series: Séries
|
|
54
|
+
parts: "({{count}} partes)"
|
|
55
|
+
articles: Artigos
|
|
56
|
+
empty: Ainda não há artigos publicados.
|
|
48
57
|
global:
|
|
49
58
|
skip_to_main: Ir para o conteúdo principal
|
|
50
59
|
math_ready: Conteúdo matemático disponível
|
|
@@ -147,6 +156,8 @@ navigation:
|
|
|
147
156
|
julia: Julia
|
|
148
157
|
javascript: JavaScript
|
|
149
158
|
home:
|
|
159
|
+
features: O que pode publicar
|
|
160
|
+
explore_more: Explorar mais
|
|
150
161
|
latest_research: Notas de investigação recentes
|
|
151
162
|
reading_time_one: Leitura de 1 min
|
|
152
163
|
reading_time_many: "Leitura de {{minutes}} min"
|
|
@@ -162,6 +173,14 @@ article:
|
|
|
162
173
|
authors: Autores
|
|
163
174
|
corrections:
|
|
164
175
|
summary: Comunicar um erro ou sugerir uma correção
|
|
176
|
+
fallback:
|
|
177
|
+
subject: "Correção: {{title}}"
|
|
178
|
+
article: Artigo
|
|
179
|
+
url: Endereço
|
|
180
|
+
prompt: "Descreva o erro e a correção sugerida."
|
|
181
|
+
section: Secção
|
|
182
|
+
quote: Passagem selecionada
|
|
183
|
+
public_note: "As comunicações por issue são públicas. Não inclua dados privados."
|
|
165
184
|
intro: "Encontrou um erro na matemática, nos factos, numa citação, no código ou na reprodutibilidade? Diga o quê e onde. O relato vai para o autor, não para a página."
|
|
166
185
|
category: Que tipo de problema
|
|
167
186
|
section: Onde
|
|
@@ -370,6 +389,16 @@ dynamic_services:
|
|
|
370
389
|
aborted: O pedido foi cancelado.
|
|
371
390
|
retry_after: "Tente novamente em {{seconds}} segundos."
|
|
372
391
|
reference: "Referência: {{id}}"
|
|
392
|
+
citations:
|
|
393
|
+
and: e
|
|
394
|
+
et_al: et al.
|
|
395
|
+
no_date: s.d.
|
|
396
|
+
back: "Voltar à citação {{n}}"
|
|
397
|
+
locators:
|
|
398
|
+
p: p.
|
|
399
|
+
pp: pp.
|
|
400
|
+
chap: cap.
|
|
401
|
+
sec: sec.
|
|
373
402
|
references:
|
|
374
403
|
figure: Figura
|
|
375
404
|
table: Tabela
|
|
@@ -390,6 +419,8 @@ post:
|
|
|
390
419
|
evidence: Evidência utilizada
|
|
391
420
|
method: Método
|
|
392
421
|
reviewed: Revisto
|
|
422
|
+
reviewed_on: "Revisto a {{date}}"
|
|
423
|
+
link: Como este artigo foi feito
|
|
393
424
|
revisions:
|
|
394
425
|
heading: Histórico de revisões
|
|
395
426
|
corrected_on: "Corrigido em {{date}}."
|
|
@@ -550,9 +581,6 @@ notebook:
|
|
|
550
581
|
launch_binder: Abrir no Binder
|
|
551
582
|
open_colab: Abrir no Colab
|
|
552
583
|
academic_dashboard:
|
|
553
|
-
header:
|
|
554
|
-
title: Hub de integração académica
|
|
555
|
-
description: Monitorize métricas de publicação, sincronize perfis académicos e coordene submissões, financiamento e programas de mentoria.
|
|
556
584
|
profiles:
|
|
557
585
|
title: Perfis académicos e sincronização
|
|
558
586
|
view_profile: Ver perfil
|
|
@@ -565,6 +593,7 @@ academic_dashboard:
|
|
|
565
593
|
featured_projects: Projetos em destaque
|
|
566
594
|
collections: Coleções
|
|
567
595
|
auto_update: Atualização automática
|
|
596
|
+
auto_update_on: "Ativa"
|
|
568
597
|
citations:
|
|
569
598
|
title: Métricas de citação
|
|
570
599
|
total: Total de citações
|
|
@@ -748,6 +777,15 @@ analytics:
|
|
|
748
777
|
last_updated: Última atualização
|
|
749
778
|
last_updated_unknown: "Última atualização: pendente"
|
|
750
779
|
cache_window: Dados em cache por 24 horas
|
|
780
|
+
current: Resultados atuais
|
|
781
|
+
stale: Resultados em cache
|
|
782
|
+
stale_note: O GA4 está indisponível. Exibindo os últimos resultados armazenados.
|
|
783
|
+
setup_needed: Configuração necessária
|
|
784
|
+
unavailable: Indisponível
|
|
785
|
+
empty: Ainda não há resultados
|
|
786
|
+
view_data: Ver tabela de dados
|
|
787
|
+
chart_unavailable: Gráfico indisponível; consulte a tabela de dados abaixo.
|
|
788
|
+
no_chart_data: Não há dados para o gráfico.
|
|
751
789
|
top_posts: Principais publicações
|
|
752
790
|
search_terms: Consultas de pesquisa
|
|
753
791
|
visitor_trends: Tendências de visitantes
|
|
@@ -785,3 +823,17 @@ package_install:
|
|
|
785
823
|
copy: Copiar
|
|
786
824
|
copied: Copiado!
|
|
787
825
|
copy_error: Não foi possível copiar
|
|
826
|
+
gemfile: Gemfile
|
|
827
|
+
julia_repl: REPL do Julia
|
|
828
|
+
packages:
|
|
829
|
+
documentation: Documentação
|
|
830
|
+
prerelease: pré-lançamento
|
|
831
|
+
yanked: retirada
|
|
832
|
+
index:
|
|
833
|
+
title: Pacotes
|
|
834
|
+
other: Outros
|
|
835
|
+
package: Pacote
|
|
836
|
+
release: Versão
|
|
837
|
+
install: Instalação
|
|
838
|
+
purpose: Para que serve
|
|
839
|
+
empty: Ainda não há pacotes.
|