chore(release): bump v4.7.1 → v4.8.0; Prettier pass on overnight-session files

12 commits on master since v4.7.1 baseline, taking tests 524 → 914 across
27 new suites. This commit:
- Bumps package.json + README version to v4.8.0 (additive features → semver minor)
- Applies Prettier formatting to all files touched during the overnight
  session so release build is reproducible from a clean repo

New in v4.8.0:
- PDF encryption close-out (D1)
- KaTeX rendering test coverage
- Autosave buffer + crash recovery banner
- Daily notes + workspace search + doc-aware Q&A
- Search sidebar panel + Ask mode
- Status bar: word count, reading time, Flesch-Kincaid grade
- Footnote hover preview
- Smart paste (URL → link, CSV/TSV → table)
- Daily notes menu item + sidebar panel + Q&A deep-link
- Daily templates gallery
- Pluggable DocQA engine (TF-idF default + lazy neural embeddings)

Amit Haridas
This commit is contained in:
2026-09-14 14:56:05 +05:30
parent c3fe72bcae
commit b1b72f9a60
29 changed files with 186 additions and 136 deletions
+5 -7
View File
@@ -108,9 +108,9 @@ describe('renderSearchPanel — search mode', () => {
test('clicking a result calls onOpenFile with the right path', async () => {
const onOpenFile = jest.fn();
const search = jest.fn().mockResolvedValue([
{ filePath: '/notes/x.md', snippet: 's', score: 1, matchedTerms: [] },
]);
const search = jest
.fn()
.mockResolvedValue([{ filePath: '/notes/x.md', snippet: 's', score: 1, matchedTerms: [] }]);
const { container } = mountPanel({ search, onOpenFile });
container.querySelector('#search-input').value = 'x';
container.querySelector('#search-run').click();
@@ -246,9 +246,7 @@ describe('renderSearchPanel — escaping', () => {
describe('renderSearchPanel — clear/escape behaviors', () => {
test('Escape on the input clears the query and results', async () => {
const search = jest.fn().mockResolvedValue([
{ filePath: '/a.md', snippet: 's', score: 1 },
]);
const search = jest.fn().mockResolvedValue([{ filePath: '/a.md', snippet: 's', score: 1 }]);
const { container, container: c2 } = mountPanel({ search });
const input = container.querySelector('#search-input');
input.value = 'x';
@@ -283,4 +281,4 @@ describe('renderSearchPanel — clear/escape behaviors', () => {
api.clear();
expect(container.querySelector('#search-input').value).toBe('');
});
});
});