<feed xmlns='http://www.w3.org/2005/Atom'>
<title>org-drill/.gitignore, branch main</title>
<subtitle>Spaced-repetition flashcards for Org Mode
</subtitle>
<id>https://git.cjennings.net/org-drill/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/org-drill/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/'/>
<updated>2026-05-28T07:09:11+00:00</updated>
<entry>
<title>docs: relocate v0 design specs to docs/design/</title>
<updated>2026-05-28T07:09:11+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-28T07:09:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=636c18341c1f9131bfabdd547cd60797d844a601'/>
<id>urn:sha1:636c18341c1f9131bfabdd547cd60797d844a601</id>
<content type='text'>
I moved both v0 design specs out of working/ and into docs/design/. That's the conventional permanent home for project documentation, where engineers will look during implementation. working/ is meant for transient in-progress artifacts that file away once the work ships, and these specs are long-lived design docs that don't fit that contract.

Files moved:
- working/stats-dashboard/stats-dashboard.org → docs/design/stats-dashboard.org
- working/fsrs-spec/fsrs-spec.org → docs/design/fsrs-spec.org

The git rename detection picked both up, so file history follows the move.

I also dropped the stale /docs entry from .gitignore. The Makefile doesn't write to docs/ and nothing else references it as a build output, so the ignore was inherited cruft that would have silently dropped any tracked file under docs/.

I updated path references in seven spots: three docstring/comment refs in org-drill.el, one in tests/test-org-drill-session-record.el (the Commentary block), and three inside the specs themselves. Two refs in fsrs-spec.org now point at the correct location for its defcustom docstring and option description. One in stats-dashboard.org's References section points at the sister spec.

Full make test-unit green. eask compile clean.
</content>
</entry>
<entry>
<title>chore: gitignore the .notes session-memory file</title>
<updated>2026-05-28T06:28:28+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-28T06:28:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=a666ed263ccd30666f33be43852644e8246ab94e'/>
<id>urn:sha1:a666ed263ccd30666f33be43852644e8246ab94e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: gitignore the inbox dir and editor backup files</title>
<updated>2026-05-27T06:19:55+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-27T06:19:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=bb78d88be0382db8e0f946c0175897c37159f0d7'/>
<id>urn:sha1:bb78d88be0382db8e0f946c0175897c37159f0d7</id>
<content type='text'>
inbox/ holds local Claude handoff files and *~ are Emacs backups; neither belongs in the repo.
</content>
</entry>
<entry>
<title>build: migrate from Cask to Eask</title>
<updated>2026-05-10T17:52:08+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-10T17:52:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=d0128942724795511e19f5478b60e34e194cdcad'/>
<id>urn:sha1:d0128942724795511e19f5478b60e34e194cdcad</id>
<content type='text'>
Cask's upstream has slowed. Eask is the actively maintained successor.

Eask's `package-file` directive doesn't auto-install the deps from the .el header's Package-Requires, so the Eask file mirrors emacs/seq/org/persist explicitly. `eask install-deps` also doesn't pull transitive deps, so dash, m-buffer, and shut-up needed their own `depends-on` lines for undercover and elisp-lint to activate.

The Makefile swaps are mechanical: $(CASK) → $(EASK), `cask install` → `eask install-deps --dev`, `cask build` → `eask compile`.

The URL in org-drill.el's header pointed at the abandoned upstream's GitLab issues page. Eask cross-validates that against website-url, so I updated it to the GitHub mirror — where users file issues now.
</content>
</entry>
<entry>
<title>build: add lint, compile, validate-parens, and :slow tag filter</title>
<updated>2026-05-05T08:28:49+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T08:28:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=88da84f2ce342f006e8cfb3ec302cc9e32af0591'/>
<id>urn:sha1:88da84f2ce342f006e8cfb3ec302cc9e32af0591</id>
<content type='text'>
I want a stronger maintainer-discipline baseline as I take over more of this project, so I added four targets that are common in Emacs-Lisp packages.

`make lint` runs `checkdoc`, `package-lint`, and `elisp-lint` over `org-drill.el`. It's informational for now and doesn't fail on findings, because the existing source has known docstring and style debt to clear. I'll re-tighten to a hard gate after the docstring pass is done. `make compile` byte-compiles the source with `byte-compile-error-on-warn nil`, matching the existing `build` target's leniency. `make validate-parens` is a fast structural check that surfaces the line of the offending paren without needing a full byte-compile pass.

I also added a `:slow` tag filter to the default ERT runners. `test-unit`, `test-integration`, `test-file`, and `coverage` now run with `'(not (tag :slow))`. Tests tagged `:slow` get skipped on the fast feedback path. `test-name` is left alone, since a pattern argument means the user wants those tests run whether or not they're tagged slow.

Cask gets `package-lint` and `elisp-lint` as development deps. `.gitignore` gets `*-autoloads.el` so the Cask build artifact stays out.
</content>
</entry>
<entry>
<title>build: add make coverage target via undercover</title>
<updated>2026-05-05T08:10:50+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T08:10:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=77fe06b0c6f01d1d76bdf503c1b12286ac29aa0a'/>
<id>urn:sha1:77fe06b0c6f01d1d76bdf503c1b12286ac29aa0a</id>
<content type='text'>
I want to track test coverage as I work through the upstream issue backlog, so I added an undercover-based flow that mirrors how `make test-unit` already runs each file in its own Cask Emacs process.

The Makefile gets `make coverage` and `make coverage-clean`. A new helper at `tests/run-coverage-file.el` instruments `org-drill.el` before the source is loaded. Undercover merges per-file results into a single simplecov JSON at `.coverage/simplecov.json`. I added `undercover` as a Cask development dep and `.coverage/` to `.gitignore` so the report stays local.

I also renamed `make install` to `make setup`. The old name read like "deploy the package onto my system," but the target only installs Cask deps into the local `.cask/` directory. `setup` is closer to what it actually does, and all the internal `: install` prerequisites move with it.

Baseline at this commit is 10.8% (208/1928 lines on org-drill.el).
</content>
</entry>
<entry>
<title>chore: gitignore todo.org</title>
<updated>2026-04-29T13:19:11+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-29T13:19:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=194843b4dcaec073b309e91671a3a7e04f13b7de'/>
<id>urn:sha1:194843b4dcaec073b309e91671a3a7e04f13b7de</id>
<content type='text'>
The maintenance notes weren't meant to live in public history. Removed from past commits via filter-repo.
</content>
</entry>
<entry>
<title>org-drill: Implement custom drawer hiding function</title>
<updated>2025-11-12T20:42:35+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-12T20:42:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=6c2b9dc58b93aa77319ed73025b1e432e8d74c7a'/>
<id>urn:sha1:6c2b9dc58b93aa77319ed73025b1e432e8d74c7a</id>
<content type='text'>
Replace `org-cycle-hide-drawers` with a new `org-drill-hide-drawers`
function for more reliable drawer hiding in org-drill. This change
enhances the drill display by ensuring all drawers, including the
PROPERTIES drawer, are consistently hidden during presentations. The
custom function iterates through entries and hides the designated
regions, improving the user experience during interactive sessions.
</content>
</entry>
<entry>
<title>update gitignore to exclude all org files in robots dir ending in -copy</title>
<updated>2020-04-12T16:14:31+00:00</updated>
<author>
<name>Brandon Webster</name>
<email>brandon.webster@socrata.com</email>
</author>
<published>2020-04-12T16:14:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=28b8f731cb3edc982ab5f31ae772e8754ad6bbab'/>
<id>urn:sha1:28b8f731cb3edc982ab5f31ae772e8754ad6bbab</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update gitignore for generated file</title>
<updated>2019-07-20T11:40:17+00:00</updated>
<author>
<name>Phillip Lord</name>
<email>phillip.lord@russet.org.uk</email>
</author>
<published>2019-07-20T11:40:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=04923e6c38d3a3cd894849537f1cddd37f3c3829'/>
<id>urn:sha1:04923e6c38d3a3cd894849537f1cddd37f3c3829</id>
<content type='text'>
</content>
</entry>
</feed>
