Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c0d482ace7 | |||
| 5a12718566 | |||
|
|
4a0c7957ec | ||
| 12a76b4dd8 |
20
CHANGELOG.md
20
CHANGELOG.md
@ -2,21 +2,21 @@
|
|||||||
|
|
||||||
All notable changes to TFTSR are documented here.
|
All notable changes to TFTSR are documented here.
|
||||||
Commit types shown: feat, fix, perf, docs, refactor.
|
Commit types shown: feat, fix, perf, docs, refactor.
|
||||||
CI, chore, and build changes are excluded unless they affect developer workflow.
|
CI, chore, and build changes are excluded.
|
||||||
|
|
||||||
## [0.2.66] — 2026-04-20
|
## [Unreleased]
|
||||||
|
|
||||||
### Features
|
|
||||||
- Integrate incident response methodology into all 17 domain prompts
|
|
||||||
- Add timeline_events table for UTC timestamp tracking during triage
|
|
||||||
- Populate RCA and postmortem documents with real timeline data
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
- **ci**: Switch PR review from Ollama to liteLLM (qwen2.5-72b)
|
|
||||||
|
|
||||||
### Security
|
|
||||||
- Harden timeline event input validation and atomic writes
|
- Harden timeline event input validation and atomic writes
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
- Update wiki for timeline events and incident response methodology
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- Add timeline_events table, model, and CRUD commands
|
||||||
|
- Populate RCA and postmortem docs with real timeline data
|
||||||
|
- Wire incident response methodology into AI and record triage events
|
||||||
|
|
||||||
## [0.2.65] — 2026-04-15
|
## [0.2.65] — 2026-04-15
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|||||||
@ -42,11 +42,8 @@ describe("Audit Log", () => {
|
|||||||
it("displays audit entries", async () => {
|
it("displays audit entries", async () => {
|
||||||
render(<Security />);
|
render(<Security />);
|
||||||
|
|
||||||
// Wait for audit log to load
|
// Wait for table to appear after async audit data loads
|
||||||
await screen.findByText("Audit Log");
|
const table = await screen.findByRole("table");
|
||||||
|
|
||||||
// Check that the table has rows (header + data rows)
|
|
||||||
const table = screen.getByRole("table");
|
|
||||||
expect(table).toBeInTheDocument();
|
expect(table).toBeInTheDocument();
|
||||||
|
|
||||||
const rows = screen.getAllByRole("row");
|
const rows = screen.getAllByRole("row");
|
||||||
@ -56,9 +53,7 @@ describe("Audit Log", () => {
|
|||||||
it("provides way to view transmitted data details", async () => {
|
it("provides way to view transmitted data details", async () => {
|
||||||
render(<Security />);
|
render(<Security />);
|
||||||
|
|
||||||
await screen.findByText("Audit Log");
|
// Wait for async data to load and render the table
|
||||||
|
|
||||||
// Should have View/Hide buttons for expanding details
|
|
||||||
const viewButtons = await screen.findAllByRole("button", { name: /View/i });
|
const viewButtons = await screen.findAllByRole("button", { name: /View/i });
|
||||||
expect(viewButtons.length).toBeGreaterThan(0);
|
expect(viewButtons.length).toBeGreaterThan(0);
|
||||||
});
|
});
|
||||||
@ -66,14 +61,13 @@ describe("Audit Log", () => {
|
|||||||
it("details column or button exists for viewing data", async () => {
|
it("details column or button exists for viewing data", async () => {
|
||||||
render(<Security />);
|
render(<Security />);
|
||||||
|
|
||||||
await screen.findByText("Audit Log");
|
// Wait for async data to load and render the table
|
||||||
|
await screen.findByRole("table");
|
||||||
|
|
||||||
// The audit log should have a Details column header
|
|
||||||
const detailsHeader = screen.getByText("Details");
|
const detailsHeader = screen.getByText("Details");
|
||||||
expect(detailsHeader).toBeInTheDocument();
|
expect(detailsHeader).toBeInTheDocument();
|
||||||
|
|
||||||
// Should have view buttons
|
const viewButtons = screen.getAllByRole("button", { name: /View/i });
|
||||||
const viewButtons = await screen.findAllByRole("button", { name: /View/i });
|
|
||||||
expect(viewButtons.length).toBe(2); // One for each mock entry
|
expect(viewButtons.length).toBe(2); // One for each mock entry
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user