aboutsummaryrefslogtreecommitdiffstats
path: root/.thicket/tickets.jsonl
diff options
context:
space:
mode:
Diffstat (limited to '.thicket/tickets.jsonl')
-rw-r--r--.thicket/tickets.jsonl13
1 files changed, 9 insertions, 4 deletions
diff --git a/.thicket/tickets.jsonl b/.thicket/tickets.jsonl
index 046e885..e7690e5 100644
--- a/.thicket/tickets.jsonl
+++ b/.thicket/tickets.jsonl
@@ -65,6 +65,7 @@
{"id":"NK-ed1iah","title":"Make feed crawling async in API","description":"Currently, POST /api/feed triggers an immediate crawl which blocks the response (or at least keeps the goroutine alive). Refactor the crawling architecture to be truly async with a job queue or status updates, improving API responsiveness and reliability.","type":"cleanup","status":"icebox","priority":4,"labels":null,"assignee":"","created":"2026-02-13T04:26:55.908243985Z","updated":"2026-02-13T04:26:55.908243985Z"}
{"id":"NK-edahin","title":"v3: cut \"FILTERS\" text","description":"there's no header needed above unread/read/starred, just cut that please","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-16T15:48:13.470233363Z","updated":"2026-02-16T16:21:21.828382936Z"}
{"id":"NK-ek0cox","title":"Implement Item Interactions","description":"Add ability to toggle read/unread and star/unstar status for items. Use PUT /item/:id","type":"","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T14:55:14.825454967Z","updated":"2026-02-13T14:58:18.307521003Z"}
+{"id":"NK-eqduq1","title":"run the performance test suite and provide some benchmarks","description":"Create a document in DOCS after running the perf test suite with findings and potential improvements.","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-16T19:48:08.40974488Z","updated":"2026-02-16T22:05:48.66181541Z"}
{"id":"NK-exyau3","title":"check coverage again","description":"check test coverage again and see if more tests are needed","type":"task","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-15T00:07:39.320521992Z","updated":"2026-02-15T05:31:22.48357749Z"}
{"id":"NK-f64ocp","title":"Refactor routing logic for consistent settings exit","description":"Instead of checking 'if currentRoute.path == /settings' in every click handler, maybe centralize this logic in the router or a helper function to ensure consistent behavior when navigating away from settings.","type":"cleanup","status":"open","priority":4,"labels":null,"assignee":"","created":"2026-02-16T16:17:36.299928698Z","updated":"2026-02-16T16:17:36.299928698Z"}
{"id":"NK-fkc119","title":"setup github ci","description":"Maybe it'd be nice to have github run the tests. Is that a thing we can try to setup","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T03:16:32.574415787Z","updated":"2026-02-14T03:23:01.837550873Z"}
@@ -79,10 +80,11 @@
{"id":"NK-gdf99z","title":"TUI is terrible and needs fixing","description":"The TUI doesn't really work and doesn't make sense. Think very hard and look at the v2 HTML UI implementation and make something cool like that. Probably needs tests too.","type":"epic","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-14T03:51:59.882212859Z","updated":"2026-02-14T04:31:28.290051717Z"}
{"id":"NK-gfh33y","title":"[security] Implement CSRF Protection for API","description":"Add CSRF protection to all state-changing API endpoints. 1. Implement a middleware that generates a CSRF token and sets it in a cookie (readable by JS) or header. 2. Update the AuthWrap middleware to validate the presence of this token in the X-CSRF-Token header for all unsafe methods (POST, PUT, DELETE). 3. Update the React frontend to read the token and include it in all API requests.","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-14T16:35:56.341543505Z","updated":"2026-02-14T17:08:53.079904915Z"}
{"id":"NK-ghpdkr","title":"Add coverage check to 'make check'","description":"Add a code coverage check to the 'make check' workflow, ensuring it doesn't significantly slow down execution. This replaces ad-hoc coverage checks.","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-15T16:27:42.348183236Z","updated":"2026-02-15T17:26:33.764005669Z"}
+{"id":"NK-gjj92c","title":"Add tablet breakpoint CSS for sidebar (1024px)","description":"The sidebar cookie persistence uses 1024px as the tablet/mobile threshold for default-closed behavior, but the CSS media queries still use 768px for mobile sidebar styles. Consider adding a tablet breakpoint at 1024px for intermediate layout behavior.","type":"task","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-16T22:08:13.765775664Z","updated":"2026-02-16T22:08:13.765775664Z"}
{"id":"NK-gjymiw","title":"FEEDS in sidebar needs to be more clearly a collapsible thing","description":"FEEDS in the sidebar needs a caret (\u003e that turns to V) or something similar to make it clear it's a toggle collapsible list thing","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T23:54:20.355824171Z","updated":"2026-02-15T00:06:02.456524674Z"}
{"id":"NK-gnxc6e","title":"Feed list collapsed by default","description":"The list of feeds on the left side should be collapsed by default, with a little control to extend it.","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T00:58:15.661695308Z","updated":"2026-02-14T01:29:12.82081713Z"}
{"id":"NK-gqkh96","title":"Remaining test coverage gaps","description":"Cross-package test coverage is at 81.2%. The remaining untested functions are: GetFullContent (goose HTTP extraction), indexHandler/serveBoxedFile (rice.MustFindBox), Serve (starts HTTP server), main, util.init. To reach 90%, consider: (1) refactoring GetFullContent to accept an interface for HTTP fetching, (2) refactoring Serve to extract route setup into a testable function, (3) mocking rice.MustFindBox, (4) using feeds from https://trenchant.org/feeds.txt as static test fixtures for integration tests.","type":"cleanup","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T03:54:30.298141982Z","updated":"2026-02-14T02:44:05.399097286Z"}
-{"id":"NK-gxvegm","title":"Settings page toggle behavior for feeds and tags","description":"Currently only 'filters' and 'settings' link toggle away from settings page. We should probably implement similar behavior if clicking on a feed or tag while on the settings page (it currently might work by accident due to direct navigation, but we should verify).","type":"task","status":"open","priority":2,"labels":null,"assignee":"","created":"2026-02-16T16:17:21.4431998Z","updated":"2026-02-16T16:17:21.4431998Z"}
+{"id":"NK-gxvegm","title":"Settings page toggle behavior for feeds and tags","description":"Currently only 'filters' and 'settings' link toggle away from settings page. We should probably implement similar behavior if clicking on a feed or tag while on the settings page (it currently might work by accident due to direct navigation, but we should verify).","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-16T16:17:21.4431998Z","updated":"2026-02-16T22:07:17.105682607Z"}
{"id":"NK-hidz4w","title":"Add Local Git Hooks","description":"Create a script/make target to install a pre-push hook that runs 'make check'. This enforces quality gates locally, keeping the CI clean.","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-15T16:23:36.906173277Z","updated":"2026-02-15T17:25:28.129358055Z"}
{"id":"NK-hj6f9p","title":"Investigate E2E Tag View flakiness","description":"The E2E test for /v2/tag/Tech was temporarily disabled because it was timing out/failing. Investigate if it's a race condition or a routing issue.","type":"bug","status":"closed","priority":4,"labels":null,"assignee":"","created":"2026-02-15T01:04:54.404114014Z","updated":"2026-02-15T19:14:17.974207248Z"}
{"id":"NK-hspao2","title":"Vanilla JS: Implement Test Infrastructure","description":"Setup testing infrastructure for vanilla JS prototype to ensure 80% coverage. Refactor app.js for testability and add unit tests.","type":"task","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T05:13:11.587767054Z","updated":"2026-02-14T05:13:11.587767054Z"}
@@ -92,7 +94,7 @@
{"id":"NK-iklxn4","title":"infinite scroll on ipad/mobile","description":"On a mobile device, the infinite scrooll didn't seem to be working properly and triggering as I scrolled to the bottom. Are the right triggers set up for mobile browsers as well as desktop -- this was on an ipad.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-15T16:12:01.013697894Z","updated":"2026-02-15T16:35:49.542636756Z"}
{"id":"NK-iux6qx","title":"Add thicket config.json to repository","description":"The .thicket/config.json file was missing from the repository, causing thicket add to fail with 'not initialized' error. Ensure config.json is tracked in git so future agents can use thicket commands.","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-16T19:09:59.044156033Z","updated":"2026-02-16T19:10:08.535167617Z"}
{"id":"NK-iw9l7h","title":"Improve scraper heuristics","description":"The scraper currently uses a simple fallback between CleanedText and TopNode. It could be improved to better handle different article layouts.","type":"feature","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-14T01:04:11.588135487Z","updated":"2026-02-14T01:04:11.588135487Z"}
-{"id":"NK-j9fv6r","title":"v3: sidebar behavior","description":"1. Remember sidebar open/close status via cookie\n2. On tablet+mobile, default to closed.","type":"task","status":"open","priority":1,"labels":null,"assignee":"","created":"2026-02-16T16:00:26.254957438Z","updated":"2026-02-16T16:00:26.254957438Z"}
+{"id":"NK-j9fv6r","title":"v3: sidebar behavior","description":"1. Remember sidebar open/close status via cookie\n2. On tablet+mobile, default to closed.","type":"","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-16T16:00:26.254957438Z","updated":"2026-02-16T19:28:04.407145861Z"}
{"id":"NK-jhludy","title":"600px width by default, closer to left panel","description":"On desktop the feed items are too narrow (~500px) compared to legacy version which is ~600px.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T20:14:48.84900972Z","updated":"2026-02-13T20:50:22.207833479Z"}
{"id":"NK-jqpn98","title":"adding feed in v2 ui shows error","description":"added https://trenchant.org/rss.xml as a feed in the UI but it gave some weird message inline like unexpected character, but it did eventually add it. what happened there","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T01:22:17.546117265Z","updated":"2026-02-14T01:25:07.317174513Z"}
{"id":"NK-jyw7lb","title":"add neko cat back to hide left navivation","description":"Change the \"neko reader\" to the cat emoji like in the legacy and have it toggle visibility of the left nav","type":"feature","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T01:01:08.430978911Z","updated":"2026-02-14T01:21:11.002320114Z"}
@@ -100,6 +102,7 @@
{"id":"NK-k1p9ij","title":"Evaluate E2E test harness","description":"Evaluate the current E2E test harness (Cleaning up test environment...\nCleanup complete.\nBuilding backend...\nCreating data directory...\nStarting mock feed server on port 9090...\nMock Server PID: 166494\nMock server is up.\nStarting backend on port 4994...\nBackend PID: 166520\nWaiting for backend to start...\nWaiting...\nBackend is up!\nRunning E2E tests...\n\n\u003e frontend@0.0.0 test:e2e\n\u003e playwright test\n\n\nRunning 13 tests using 1 worker\n\n\u001b[1A\u001b[2K[1/13] [chromium] › tests/auth.spec.ts:12:5 › Authentication - No Password Required › should allow direct access to dashboard without login\n\u001b[1A\u001b[2K[2/13] [chromium] › tests/auth.spec.ts:25:5 › Authentication - No Password Required › should allow login with empty password\n\u001b[1A\u001b[2K[3/13] [chromium] › tests/auth.spec.ts:38:5 › Authentication - No Password Required › should report authenticated status via API when no password\n\u001b[1A\u001b[2K[4/13] [chromium] › tests/auth.spec.ts:53:10 › Authentication - Password Required › should redirect to login when accessing protected routes\n\u001b[1A\u001b[2K[5/13] [chromium] › tests/auth.spec.ts:64:10 › Authentication - Password Required › should reject incorrect password\n\u001b[1A\u001b[2K[6/13] [chromium] › tests/auth.spec.ts:79:10 › Authentication - Password Required › should accept correct password and redirect to dashboard\n\u001b[1A\u001b[2K[7/13] [chromium] › tests/auth.spec.ts:93:10 › Authentication - Password Required › should persist authentication across page reloads\n\u001b[1A\u001b[2K[8/13] [chromium] › tests/auth.spec.ts:109:10 › Authentication - Password Required › should logout and redirect to login page\n\u001b[1A\u001b[2K[9/13] [chromium] › tests/auth.spec.ts:128:10 › Authentication - Password Required › should report unauthenticated status via API\n\u001b[1A\u001b[2K[10/13] [chromium] › tests/auth.spec.ts:142:5 › Authentication - Complete Flow › should handle complete user flow without password\n\u001b[1A\u001b[2K[11/13] [chromium] › tests/crawl.spec.ts:4:5 › Crawl Integration › should add a feed and see items after crawl\n\u001b[1A\u001b[2K[12/13] [chromium] › tests/e2e.spec.ts:4:3 › Neko Reader E2E › should allow login, viewing feeds, and logout\n\u001b[1A\u001b[2K[chromium] › tests/e2e.spec.ts:4:3 › Neko Reader E2E › should allow login, viewing feeds, and logout\nStep 5: Navigate to Home\n\n\u001b[1A\u001b[2KStep 6: Logout\n\n\u001b[1A\u001b[2K[13/13] [chromium] › tests/font.spec.ts:4:5 › Font Theme Settings › should change font family when theme starts\n\u001b[1A\u001b[2K 6 skipped\n 7 passed (5.2s)\n\nTo open last HTML report run:\n\u001b[36m\u001b[39m\n\u001b[36m npx playwright show-report\u001b[39m\n\u001b[36m\u001b[39m\nTests passed!\nCleaning up...\nCleaning up test environment...\nCleanup complete.) which is brittle and resource intensive. Consider alternative approaches or refactoring.","type":"task","status":"closed","priority":4,"labels":null,"assignee":"","created":"2026-02-15T16:23:52.252436663Z","updated":"2026-02-15T19:14:31.772890559Z"}
{"id":"NK-k2fh32","title":"scroll mark as read broken in V3 UI","description":"j/k properly select and mark an item as read, but scrolling it off the screen on desktop and mobile don't seem to mark it as read.","type":"bug","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-16T15:32:42.579032595Z","updated":"2026-02-16T15:37:20.993241382Z"}
{"id":"NK-k4y597","title":"[feature] light/dark/black toggle","description":"Add in a simple [light | dark | black] theme toggler like in the legacy version.","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T00:45:55.312953906Z","updated":"2026-02-14T01:29:20.073659889Z"}
+{"id":"NK-k9otuy","title":"Exclude full_content from stream list API responses","description":"Benchmarks show ~380KB/op allocation for stream endpoint, largely from serializing full_content field that is not displayed in list views. Excluding this field from list responses would reduce memory allocation and improve API response times. Full content is already available via the /api/item/:id/content scrape endpoint.","type":"task","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-16T22:08:15.014135834Z","updated":"2026-02-16T22:08:15.014135834Z"}
{"id":"NK-kdn1m2","title":"Optimize observer creation in renderItems","description":"We currently recreate IntersectionObservers every time renderItems is called. We should investigate if this impacts performance and potentially reuse the observer or optimize the logic.","type":"task","status":"open","priority":4,"labels":null,"assignee":"","created":"2026-02-16T15:37:41.915993277Z","updated":"2026-02-16T15:37:41.915993277Z"}
{"id":"NK-kqt9oc","title":"docker support","description":"add support so people can self-host this in docker and (maybe) test it yourself. maybe keep it in a docker directory with separate docs etc.","type":"epic","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T20:19:10.70328135Z","updated":"2026-02-14T01:03:35.363466842Z"}
{"id":"NK-kra45a","title":"enhance github ci/cq","description":"Make sure we have the right CI/CQ things in the github workflow. Can it test our docker compose for us too maybe","type":"feature","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-15T00:08:25.732991582Z","updated":"2026-02-15T01:04:54.350079542Z"}
@@ -113,7 +116,7 @@
{"id":"NK-mwf9q2","title":"Implement Tag View","description":"Create frontend view for browsing items by tag/category. Use /tag/:id endpoint.","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-13T15:04:12.441165286Z","updated":"2026-02-13T18:04:38.644796168Z"}
{"id":"NK-mx8o1b","title":"review recent tickets / CLs and write tests","description":"Given the key behaviors/features/bugs are there any additional tests needed -- don't worry about e2e tests.","type":"epic","status":"open","priority":3,"labels":null,"assignee":"","created":"2026-02-16T16:01:44.60710814Z","updated":"2026-02-16T16:01:44.60710814Z"}
{"id":"NK-n7nuyy","title":"Fix TypeScript Lint Errors in Tests","description":"There are lint errors in test files regarding jest-dom matchers (toBeInTheDocument, etc). Ensure proper types are included.","type":"bug","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T21:50:15.140702806Z","updated":"2026-02-13T21:50:15.140702806Z"}
-{"id":"NK-ngokc3","title":"Enhance CSRF protection for login page","description":"The /login/ endpoint is currently excluded from CSRF checks to allow standard form submission. We should explore adding a hidden CSRF token to the form or using Javascript to submit to /api/login for better protection.","type":"cleanup","status":"open","priority":2,"labels":null,"assignee":"","created":"2026-02-16T15:56:34.617681973Z","updated":"2026-02-16T15:56:34.617681973Z"}
+{"id":"NK-ngokc3","title":"Enhance CSRF protection for login page","description":"The /login/ endpoint is currently excluded from CSRF checks to allow standard form submission. We should explore adding a hidden CSRF token to the form or using Javascript to submit to /api/login for better protection.","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-16T15:56:34.617681973Z","updated":"2026-02-16T22:02:51.841992054Z"}
{"id":"NK-nx8dhw","title":"fix github ci","description":"seems to be broken, are the right things still in there given all the refactorings","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T18:02:19.485418738Z","updated":"2026-02-14T18:08:16.790742187Z"}
{"id":"NK-o3n9jf","title":"[security] Run Docker Container as Non-Root User","description":"Update the Dockerfile to create and use a non-privileged user. 1. Create a user (e.g., neko) in the final stage. 2. Ensure the /app/data directory is owned by this user. 3. Switch to this user using USER neko before the CMD.","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-14T16:35:58.328232962Z","updated":"2026-02-14T17:18:34.748238191Z"}
{"id":"NK-ojdcmq","title":"UI: Add skeleton loaders for feed item loading","description":"The currently 'Loading more...' text is basic. We should add skeleton loaders for a smoother infinite scroll experience.","type":"task","status":"closed","priority":3,"labels":null,"assignee":"","created":"2026-02-13T19:45:07.376295295Z","updated":"2026-02-13T19:45:07.376295295Z"}
@@ -157,7 +160,7 @@
{"id":"NK-uywybr","title":"https://computer.rip/rss.xml fails to importa","description":"running neko -a https://computer.rip/rss.xml gave an error. debug it and add test case to catch.","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-13T20:12:28.54350403Z","updated":"2026-02-14T01:03:02.755247954Z"}
{"id":"NK-v9e7r3","title":"consistency in sidebar","description":"With the new sidebar styling, SETTINGS and LOGOUT and the light/dark look really different than the rest. Let's make them more consistent from a style perspective.","type":"feature","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-14T23:55:51.554786606Z","updated":"2026-02-15T00:22:33.826814528Z"}
{"id":"NK-wibjlg","title":"update README.md","description":"Ensure the build, configuration, etc are up too date.\nNote the git change when we started to vibe-code this in the history (with dates etc.)","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T20:18:08.790048498Z","updated":"2026-02-13T22:36:07.717448961Z"}
-{"id":"NK-wj8m4v","title":"Fix pre-existing safehttp test failure","description":"TestSafeClient in internal/safehttp fails: private IP check returns nil error instead of blocking. The test expects an error for 10.0.0.1 but gets nil.","type":"bug","status":"open","priority":2,"labels":null,"assignee":"","created":"2026-02-16T19:09:38.775620083Z","updated":"2026-02-16T19:09:38.775620083Z"}
+{"id":"NK-wj8m4v","title":"Fix pre-existing safehttp test failure","description":"TestSafeClient in internal/safehttp fails: private IP check returns nil error instead of blocking. The test expects an error for 10.0.0.1 but gets nil.","type":"","status":"closed","priority":2,"labels":null,"assignee":"","created":"2026-02-16T19:09:38.775620083Z","updated":"2026-02-16T22:07:45.904161737Z"}
{"id":"NK-wjats7","title":"v3 ui: takes 3 presses of 'j' to move to next item","description":"Is there some weird timer before it's scrolling it -- after that it's fine. Or a delay to setup the listener or something","type":"bug","status":"closed","priority":1,"labels":null,"assignee":"","created":"2026-02-16T16:20:01.7097349Z","updated":"2026-02-16T18:53:59.531388427Z"}
{"id":"NK-wjnczv","title":"Vanilla JS: Test Infrastructure \u0026 Coverage","description":"Setup testing framework (likely vitest or simple runner) for vanilla JS. Refactor code for testability. Aim for 80% coverage on vanilla/app.js logic.","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-14T05:13:23.292982698Z","updated":"2026-02-14T05:34:53.241988263Z"}
{"id":"NK-x924bu","title":"test coverage","description":"assume the code works properly (it mostly does)\nget to 90% test coverage on the go code","type":"task","status":"closed","priority":0,"labels":null,"assignee":"","created":"2026-02-13T01:52:01.042476226Z","updated":"2026-02-13T03:54:21.526519915Z"}
@@ -207,6 +210,7 @@
{"id":"NK-dmdluco","from_ticket_id":"NK-s2g59a","to_ticket_id":"NK-k2fh32","type":"created_from","created":"2026-02-16T15:37:40.651054188Z"}
{"id":"NK-dmmxnj3","from_ticket_id":"NK-lrihov","to_ticket_id":"NK-ak4om3","type":"created_from","created":"2026-02-15T16:41:08.42415823Z"}
{"id":"NK-dmow9sy","from_ticket_id":"NK-iw9l7h","to_ticket_id":"NK-uywybr","type":"created_from","created":"2026-02-14T01:04:11.599126072Z"}
+{"id":"NK-dnmop5u","from_ticket_id":"NK-k9otuy","to_ticket_id":"NK-eqduq1","type":"created_from","created":"2026-02-16T22:08:15.050189358Z"}
{"id":"NK-dnspb2r","from_ticket_id":"NK-6o87rr","to_ticket_id":"NK-d4c8jv","type":"created_from","created":"2026-02-14T04:47:40.652696057Z"}
{"id":"NK-dnw8qnj","from_ticket_id":"NK-qwef98","to_ticket_id":"NK-mwf9q2","type":"created_from","created":"2026-02-13T18:05:18.469080925Z"}
{"id":"NK-do2cces","from_ticket_id":"NK-ngokc3","to_ticket_id":"NK-oqd24q","type":"created_from","created":"2026-02-16T15:56:34.653005025Z"}
@@ -219,6 +223,7 @@
{"id":"NK-dwav3hh","from_ticket_id":"NK-6q9nyg","to_ticket_id":"NK-x924bu","type":"created_from","created":"2026-02-13T03:54:37.639569082Z"}
{"id":"NK-dwoby5c","from_ticket_id":"NK-5zgzee","to_ticket_id":"NK-d4c8jv","type":"created_from","created":"2026-02-14T04:47:43.008840145Z"}
{"id":"NK-dy64l7j","from_ticket_id":"NK-m8bya7","to_ticket_id":"NK-mbuw7q","type":"created_from","created":"2026-02-14T03:08:18.518727956Z"}
+{"id":"NK-dy8ndia","from_ticket_id":"NK-gjj92c","to_ticket_id":"NK-j9fv6r","type":"created_from","created":"2026-02-16T22:08:13.797862972Z"}
{"id":"NK-dyjzq6a","from_ticket_id":"NK-8u3uo3","to_ticket_id":"NK-r39tqq","type":"created_from","created":"2026-02-15T05:16:55.281950619Z"}
{"id":"NK-dz8ehu0","from_ticket_id":"NK-zs9we8","to_ticket_id":"NK-mwf9q2","type":"created_from","created":"2026-02-13T18:05:16.20323827Z"}
{"id":"NK-dzv8knd","from_ticket_id":"NK-2ypbgd","to_ticket_id":"NK-d4c8jv","type":"created_from","created":"2026-02-14T04:47:39.432806599Z"}