diff --git a/package-lock.json b/package-lock.json index 99ddd19..7a173d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "i18next": "^26.0.6", "react-i18next": "^17.0.4", "react-is": "^19.2.5", - "toktrack": "2.5.0" + "toktrack": "2.6.0" }, "bin": { "ttdash": "server.js" @@ -6231,9 +6231,9 @@ } }, "node_modules/i18next": { - "version": "26.0.6", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.0.6.tgz", - "integrity": "sha512-A4U6eCXodIbrhf8EarRurB9/4ebyaurH4+fu4gig9bqxmpSt+fCAFm/GpRQDcN1Xzu/LdFCx4nYHsnM1edIIbg==", + "version": "26.0.8", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.0.8.tgz", + "integrity": "sha512-BRzLom0mhDhV9v0QhgUUHWQJuwFmnr1194xEcNLYD6ym8y8s542n4jXUvRLnhNTbh9PmpU6kGZamyuGHQMsGjw==", "funding": [ { "type": "individual", @@ -6249,9 +6249,6 @@ } ], "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.29.2" - }, "peerDependencies": { "typescript": "^5 || ^6" }, @@ -8398,9 +8395,9 @@ } }, "node_modules/react-i18next": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-17.0.4.tgz", - "integrity": "sha512-hQipmK4EF0y6RO6tt6WuqnmWpWYEXmQUUzecmMBuNsIgYd3smXcG4GtYPWhvgxn0pqMOItKlEO8H24HCs5hc3g==", + "version": "17.0.6", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-17.0.6.tgz", + "integrity": "sha512-WzJ6SMKF+GTD7JZZqxSR1AKKmXjaSu39sClUrNlwxS4Tl7a99O+ltFy6yhPMO+wgZuxpQjJ2PZkfrQKmAqrLhw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.29.2", @@ -9648,9 +9645,9 @@ } }, "node_modules/toktrack": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/toktrack/-/toktrack-2.5.0.tgz", - "integrity": "sha512-WJYj86vF6uQ2NA3eBQZ7bzN9Idrn12i3u2vEqT7FkjuTAz6zaRXX1/Z1JjIyurc7OR8xfzE78PiONhCTl0T3jw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/toktrack/-/toktrack-2.6.0.tgz", + "integrity": "sha512-Gq6Q7hsMc8i3Ld4gG7pCgG63D4QADPDjquWiQ8lRsmio1+WXSK+7E85MLNAiHthb1Qdwv2Tsk9uVa90YPVbAxQ==", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index 9b7716e..0f2eaa1 100644 --- a/package.json +++ b/package.json @@ -127,6 +127,6 @@ "i18next": "^26.0.6", "react-i18next": "^17.0.4", "react-is": "^19.2.5", - "toktrack": "2.5.0" + "toktrack": "2.6.0" } } diff --git a/shared/toktrack-version.d.ts b/shared/toktrack-version.d.ts index 538d026..582efb4 100644 --- a/shared/toktrack-version.d.ts +++ b/shared/toktrack-version.d.ts @@ -1,6 +1,6 @@ /** Canonical npm package name used for toktrack lookups and execution. */ export const TOKTRACK_PACKAGE_NAME: 'toktrack' /** Pinned toktrack version validated by TTDash. */ -export const TOKTRACK_VERSION: '2.5.0' +export const TOKTRACK_VERSION: '2.6.0' /** Fully qualified toktrack package spec used by npm and bun executors. */ -export const TOKTRACK_PACKAGE_SPEC: 'toktrack@2.5.0' +export const TOKTRACK_PACKAGE_SPEC: 'toktrack@2.6.0' diff --git a/shared/toktrack-version.js b/shared/toktrack-version.js index e8f7286..4f99f0c 100644 --- a/shared/toktrack-version.js +++ b/shared/toktrack-version.js @@ -1,5 +1,5 @@ const TOKTRACK_PACKAGE_NAME = 'toktrack' -const TOKTRACK_VERSION = '2.5.0' +const TOKTRACK_VERSION = '2.6.0' const TOKTRACK_PACKAGE_SPEC = `${TOKTRACK_PACKAGE_NAME}@${TOKTRACK_VERSION}` module.exports = { diff --git a/tests/e2e/helpers.ts b/tests/e2e/helpers.ts index 0730de1..77f8dd2 100644 --- a/tests/e2e/helpers.ts +++ b/tests/e2e/helpers.ts @@ -2,6 +2,7 @@ import fs from 'node:fs' import fsPromises from 'node:fs/promises' import path from 'node:path' import { expect, type Download, type Page } from '@playwright/test' +import { TOKTRACK_VERSION } from '../../shared/toktrack-version.js' export const sampleUsagePath = path.join(process.cwd(), 'examples', 'sample-usage.json') @@ -154,7 +155,12 @@ export async function mockAutoImportStream(page: Page) { }, body: [ 'event: check', - 'data: {"tool":"toktrack","status":"found","method":"mock","version":"2.5.0"}', + `data: ${JSON.stringify({ + tool: 'toktrack', + status: 'found', + method: 'mock', + version: TOKTRACK_VERSION, + })}`, '', 'event: progress', 'data: {"key":"startingLocalImport"}', diff --git a/tests/unit/api.test.ts b/tests/unit/api.test.ts index b07a4c4..0359fc0 100644 --- a/tests/unit/api.test.ts +++ b/tests/unit/api.test.ts @@ -13,6 +13,7 @@ import { } from '@/lib/api' import { DEFAULT_APP_SETTINGS } from '@/lib/app-settings' import { initI18n } from '@/lib/i18n' +import { TOKTRACK_VERSION } from '../../shared/toktrack-version.js' describe('api error handling', () => { beforeEach(async () => { @@ -254,7 +255,7 @@ describe('api error handling', () => { vi.fn().mockResolvedValue( new Response( JSON.stringify({ - configuredVersion: '2.5.0', + configuredVersion: TOKTRACK_VERSION, latestVersion: '2.4.1', isLatest: false, lookupStatus: 'ok', @@ -268,7 +269,7 @@ describe('api error handling', () => { ) await expect(fetchToktrackVersionStatus()).resolves.toEqual({ - configuredVersion: '2.5.0', + configuredVersion: TOKTRACK_VERSION, latestVersion: '2.4.1', isLatest: false, lookupStatus: 'ok', diff --git a/tests/unit/auto-import.test.ts b/tests/unit/auto-import.test.ts index 17965c8..4d4b478 100644 --- a/tests/unit/auto-import.test.ts +++ b/tests/unit/auto-import.test.ts @@ -1,5 +1,6 @@ import { afterEach, describe, expect, it, vi } from 'vitest' import { startAutoImport, translateAutoImportEvent } from '@/lib/auto-import' +import { TOKTRACK_PACKAGE_SPEC } from '../../shared/toktrack-version.js' const translations = { 'autoImportModal.startingLocalImport': 'Starte toktrack-Import...', @@ -59,11 +60,11 @@ describe('translateAutoImportEvent', () => { translateAutoImportEvent( { key: 'loadingUsageData', - vars: { command: 'npx --yes toktrack@2.5.0 daily --json' }, + vars: { command: `npx --yes ${TOKTRACK_PACKAGE_SPEC} daily --json` }, }, translate, ), - ).toBe('Lade Nutzungsdaten via npx --yes toktrack@2.5.0 daily --json...') + ).toBe(`Lade Nutzungsdaten via npx --yes ${TOKTRACK_PACKAGE_SPEC} daily --json...`) expect( translateAutoImportEvent( { diff --git a/tests/unit/runtime-state.test.ts b/tests/unit/runtime-state.test.ts index 3204fee..f0a4361 100644 --- a/tests/unit/runtime-state.test.ts +++ b/tests/unit/runtime-state.test.ts @@ -109,13 +109,13 @@ describe('server runtime state services', () => { expect(load).toHaveBeenCalledWith('first') expect(requestedLabels).toEqual(['first']) - resolveLookup({ status: 'ok', value: '2.5.0' }) + resolveLookup({ status: 'ok', value: 'fresh-value' }) - await expect(firstLookup).resolves.toEqual({ status: 'ok', value: '2.5.0' }) - await expect(secondLookup).resolves.toEqual({ status: 'ok', value: '2.5.0' }) + await expect(firstLookup).resolves.toEqual({ status: 'ok', value: 'fresh-value' }) + await expect(secondLookup).resolves.toEqual({ status: 'ok', value: 'fresh-value' }) now.mockReturnValue(1099) - await expect(cache.lookup('cached')).resolves.toEqual({ status: 'ok', value: '2.5.0' }) + await expect(cache.lookup('cached')).resolves.toEqual({ status: 'ok', value: 'fresh-value' }) expect(load).toHaveBeenCalledTimes(1) now.mockReturnValue(1101) diff --git a/tests/unit/startup-runtime.test.ts b/tests/unit/startup-runtime.test.ts index a7a564b..94c1d40 100644 --- a/tests/unit/startup-runtime.test.ts +++ b/tests/unit/startup-runtime.test.ts @@ -1,5 +1,6 @@ import { createRequire } from 'node:module' import { describe, expect, it, vi } from 'vitest' +import { TOKTRACK_VERSION } from '../../shared/toktrack-version.js' const require = createRequire(import.meta.url) const { createStartupRuntime, formatCurrency, formatInteger } = @@ -72,7 +73,7 @@ function createStartupRuntimeFixture(overrides: Record = {}) { autoImportRuntime: { formatAutoImportMessageEvent: (event: { key: string }) => event.key, performAutoImport: vi.fn(async ({ onCheck, onProgress, onOutput }) => { - onCheck({ status: 'found', method: 'local', version: '2.5.0' }) + onCheck({ status: 'found', method: 'local', version: TOKTRACK_VERSION }) onProgress({ key: 'processingUsageData' }) onOutput('toktrack output') return { days: 2, totalCost: 1.23 } @@ -243,7 +244,7 @@ describe('startup runtime', () => { await runtime.runStartupAutoLoad() expect(markStartupAutoLoadCompleted).toHaveBeenCalledTimes(1) - expect(logs).toContain('toktrack found (local, v2.5.0)') + expect(logs).toContain(`toktrack found (local, v${TOKTRACK_VERSION})`) expect(logs).toContain('processingUsageData') expect(logs).toContain('Auto-load complete: imported 2 days, $ 1.23.') })