You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: support per-entry aliases in journal templates
Add an :aliases key to vulpea-journal-template-daily and
vulpea-journal-template-monthly. Each element is a strftime string
expanded on the entry's date (or a function of the date), written to
vulpea-buffer-alias-property so an entry can be linked by a short stamp
instead of its heading title. Static strings pass through; multi-word
aliases are quoted.
Also fix the monthly heading path dropping the template :properties: it
now merges them with the journal-managed CREATED property instead of
writing only CREATED (same family as the earlier :body drop).
The spec helpers shared with :entry-groups are generalized
(--normalize-specs, --resolve-spec) and reused for :aliases.
Refs #16
Copy file name to clipboardExpand all lines: CHANGELOG.org
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,13 +11,15 @@
11
11
- New =vulpea-journal-tag= customization variable for configuring the journal tag. Template builders use it as the default, and =vulpea-journal-note-p= checks against it directly. ([[https://github.com/d12frosted/vulpea-journal/pull/12][#12]])
12
12
- Monthly journal granularity: one file per month with daily entries as headings. Use =vulpea-journal-template-monthly= to create a monthly template. ([[https://github.com/d12frosted/vulpea-journal/issues/2][#2]])
13
13
- Monthly templates can nest daily entries under date-derived grouping headings via the new =:entry-groups= key of =vulpea-journal-template-monthly=. Each element (a strftime string such as ="week %V"= or a function of the date) adds one heading level between the file and the entry; group headings are created and reused on demand, and =:entry-level= is derived from the number of groups so lookup and creation agree. ([[https://github.com/d12frosted/vulpea-journal/issues/16][#16]])
14
+
- Journal templates can attach computed or static aliases to each entry via the new =:aliases= key of =vulpea-journal-template-daily= and =vulpea-journal-template-monthly=. Each element is a strftime string expanded for the entry's date (e.g. ="%Y-%m-%d"=) or a function of the date; aliases are written to the property named by =vulpea-buffer-alias-property= so an entry can be linked by a short stamp instead of its heading title. ([[https://github.com/d12frosted/vulpea-journal/issues/16][#16]])
14
15
- Template builder functions: =vulpea-journal-template-daily= and =vulpea-journal-template-monthly= with sensible defaults and override support.
15
16
- Active date tracking for sidebar widgets, ensuring correct behavior when navigating between entries in the same file.
16
17
- Migration script now adds journal filetag to migrated files using =vulpea-buffer-tags-add=. ([[https://github.com/d12frosted/vulpea-journal/pull/12][#12]])
17
18
18
19
** Fixed
19
20
20
21
- Fix =:body= from monthly templates being silently dropped for heading-level entries. =vulpea-journal--create-heading-note= now passes the template =:body= through to =vulpea-create=, matching the file-level (daily) path. ([[https://github.com/d12frosted/vulpea-journal/issues/16][#16]])
22
+
- Fix template =:properties= being dropped for monthly (heading-level) entries. =vulpea-journal--create-heading-note= now merges the template =:properties= with the journal-managed =CREATED= property instead of writing only =CREATED=, matching the file-level (daily) path. ([[https://github.com/d12frosted/vulpea-journal/issues/16][#16]])
21
23
- Fix selected day not being highlighted in the calendar widget when the optional =hl-line= library is not loaded. =vulpea-journal-ui-calendar-selected= now inherits from the always-available =highlight= face instead of =hl-line=. ([[https://github.com/d12frosted/vulpea-journal/issues/14][#14]])
22
24
- Fix outdated =vulpea-db-sync= references in README — the function was renamed to =vulpea-db-sync-full-scan= in vulpea. ([[https://github.com/d12frosted/vulpea-journal/issues/11][#11]])
23
25
- Fix journal entries not found after database rebuild (=vulpea-db-sync-full-scan=). Root cause: when =vulpea-db-sync-directories= contains =~= paths (e.g., =~/notes=), the sync stored them unexpanded in the database while the journal always expanded them (e.g., =/home/user/notes=), causing exact-match lookups to fail. Fixed in vulpea by expanding paths in =vulpea-db-sync--list-org-files=. Also adds =abbreviate-file-name= and =file-truename= fallbacks in =vulpea-journal-find-note= for defense-in-depth. ([[https://github.com/d12frosted/vulpea-journal/issues/5][#5]])
By default, daily entries are placed directly under the monthly file. To nest them under intermediate grouping headings (for example, one heading per ISO week), use =:entry-groups=:
@@ -214,6 +215,20 @@ Each element of =:entry-groups= adds one heading level between the file and the
214
215
215
216
Because =:body= is inserted verbatim at fixed heading levels, nest its subheadings one level below the entry (=***= for entries at level 2, as above).
216
217
218
+
*** Entry aliases
219
+
220
+
Give each entry an alias (or several) with =:aliases=, so you can link to it by a short stamp instead of its full heading title. Each element is a =strftime= string expanded for the entry's date, or a function of the date; a single spec needs no list. Works for daily and monthly templates.
221
+
222
+
#+begin_src emacs-lisp
223
+
(setq vulpea-journal-default-template
224
+
(vulpea-journal-template-monthly
225
+
:entry-title "journal <%Y-%m-%d %a %H:%M>"
226
+
:entry-groups '("week %V")
227
+
:aliases '("%Y-%m-%d")))
228
+
#+end_src
229
+
230
+
Every entry then carries a =2026-06-08= style alias (computed from the entry's date, not today), written to the property named by =vulpea-buffer-alias-property= (=ALIASES= by default, =ROAM_ALIASES= if you configure it). See the vulpea user guide, "Managing Aliases", for how aliases are searched and linked.
0 commit comments