Commit Graph

3204 Commits

Author SHA1 Message Date
Claudio Ortolina ba2566828c Fix FTS5 crashes when searching with special characters
Always wrap FTS5 query terms in phrase double-quotes instead of
checking a hardcoded list of special characters. Characters like
|, ;, +, #, @ were missing from the list, causing FTS5 syntax
errors (production errors #1 and #1398). Phrase-quoting every term
produces identical results for normal ASCII search (verified via
SQL) while safely handling any character FTS5 chokes on.

Add regression tests for bare special characters and special
characters mixed with normal words.
2026-05-05 12:05:12 +01:00
Claudio Ortolina c87e725b05 Add prettier checks to precommit 2026-05-05 10:46:09 +01:00
Claudio Ortolina 5888324cc7 Run prettier on all relevant files 2026-05-05 10:45:25 +01:00
Claudio Ortolina 0b1f839091 Remove all remnants of claude 2026-05-05 10:36:50 +01:00
Claudio Ortolina 67d7d0f7a9 Dockerignore agent folders 2026-05-05 07:19:10 +01:00
Claudio Ortolina ce5f22cef6 Remove CLAUDE.md 2026-05-05 07:18:27 +01:00
Claudio Ortolina bcbfe2be75 Move skills to .agents/skills 2026-05-05 07:18:08 +01:00
Claudio Ortolina 41f4f08831 Streamline project conventions 2026-05-04 22:32:37 +01:00
Claudio Ortolina 53217d6c0c Add consolidated nerves deployment summary 2026-05-04 22:32:18 +01:00
Claudio Ortolina 7efe277fba Add research docs about nerves deployment 2026-05-04 22:21:38 +01:00
Claudio Ortolina eb8d4776a5 Amend update-documentation skill to monitor all other skills 2026-05-04 22:11:21 +01:00
Claudio Ortolina ff3eacb9e8 Avoid setting model and context in skill 2026-05-04 22:10:58 +01:00
Claudio Ortolina 304f6c9dcc Add new skills based on project conventions 2026-05-04 22:10:04 +01:00
Claudio Ortolina 65366738a7 Add extension to format on edit 2026-05-04 21:52:03 +01:00
Claudio Ortolina dc3b31378d Run prettier on backlog folder 2026-05-04 21:22:27 +01:00
Claudio Ortolina 7bf89d9a1d Run prettier on .pi folder 2026-05-04 21:21:10 +01:00
Claudio Ortolina 286d6fecf3 Update npm dependencies
barcode-detector 3.1.2 => 3.1.3
2026-05-04 21:18:20 +01:00
Claudio Ortolina 0ffc348234 Exclude state and params from production http logs 2026-05-04 15:08:51 +01:00
Claudio Ortolina 7c6760d7db ML-158: force single-line log output in production
Three-layer architecture:
- Logster v2 handles HTTP request and LiveView socket telemetry in logfmt format
- Custom formatter as safety net escaping any remaining embedded newlines
- Config flag (single_line_logging) gating Logster attachment to prod only

Dev environment retains multi-line format for readability.
2026-05-04 15:01:10 +01:00
Claudio Ortolina 0f19afb0aa Remove conflicting dependency update message instructions 2026-05-04 14:29:26 +01:00
Claudio Ortolina d6289219a1 Update dependencies
phoenix_live_view from 1.1.28 => 1.1.29
2026-05-04 14:28:22 +01:00
Claudio Ortolina 55f05d2011 ML-161: umbrella issue is done 2026-05-04 14:19:21 +01:00
Claudio Ortolina 1ddef07bcc fix(api): handle non-integer error ids, clamp negative pagination params
- show/2: use case instead of bare Integer.parse match so
  /api/v1/errors/not-an-id returns 404 instead of crashing
- index/2: clamp limit to >= 1 and offset to >= 0 to prevent
  SQLite from treating negative values as unlimited
- Add 3 tests: non-integer id 404, negative limit/offset clamping
2026-05-04 14:17:45 +01:00
Claudio Ortolina 0ac27565f4 fix(ci): rename HURL_api_token to HURL_VARIABLE_api_token in verify workflow
Matches the variable naming convention used in test_and_deploy.yml so
the manual verification workflow can read the API token correctly.
2026-05-04 14:17:22 +01:00
Claudio Ortolina c24e4e8a59 fix(prod-errors): security, dedup, and correctness fixes for TUI and tools
- buildUrl: detect localhost/loopback addresses and default to http://
  instead of silently upgrading everything to https://
- formatRelativeTime: guard against NaN for invalid ISO8601 inputs
- Fix 'q' key silently ignored in detail mode — now closes from any mode
- Extract shared retoggleFilter() to eliminate ~50 lines of duplication
  between toggleResolved() and toggleMuted()
- Extract shared formatDetailLines() used by both formatErrorDetail()
  (LLM tool) and buildDetailLines() (TUI) — removes ~60 duplicate lines
- Extract shared fetchApi<T>() to deduplicate HTTP error handling
  between fetchErrors() and fetchError()
- renderLoading: use visibleHeight instead of full terminal rows
- List empty-state padding: name chromeLines constant
- Fix double buildDetailLines() call in detail scroll clamping
2026-05-04 14:12:15 +01:00
Claudio Ortolina 93ac86f748 fix(errors): LIKE wildcard escaping, memory-efficient counts, context tests
- Escape LIKE wildcards (% and _) in search queries using fragment ESCAPE
  to prevent accidental pattern expansion and potential DoS vectors
- Use Repo.aggregate for occurrence_count instead of loading all
  occurrences into memory in get_error/1
- Use Repo.aggregate(:min, :inserted_at) for first_occurrence_at instead
  of fragile List.last/1 that depends on query ordering
- Add MusicLibrary.ErrorsTest with 15 tests covering list_errors/1
  (default, status/muted/search filters, wildcard escaping, pagination,
  empty results) and get_error/1 (with/without occurrences, not_found)
2026-05-04 14:11:46 +01:00
Claudio Ortolina 26a9469b3f ML-164: implementation 2026-05-04 13:47:34 +01:00
Claudio Ortolina 904f540031 ML-163: implementation 2026-05-04 13:25:08 +01:00
Claudio Ortolina 51bd24d5b4 ML-162: enable /api/v1/errors endpoint 2026-05-04 13:14:40 +01:00
Claudio Ortolina 213ca31a42 Fix parent task IDs 2026-05-04 11:04:47 +01:00
Claudio Ortolina 2bf943a206 ML-163: plan 2026-05-04 10:33:08 +01:00
Claudio Ortolina 85275cb88b Ml-162: plan 2026-05-04 10:13:09 +01:00
Claudio Ortolina 7b7309b38f Add template to work on task implementation 2026-05-04 09:46:09 +01:00
Claudio Ortolina 3d7e076906 Streamline backlog task tags 2026-05-04 09:20:11 +01:00
Claudio Ortolina 50b9023707 ML-161 (and subtasks): research and plan 2026-05-04 09:17:16 +01:00
Claudio Ortolina 4f167c4f8f Use dedicated token for pi logs access 2026-05-04 08:42:53 +01:00
Claudio Ortolina 218ddca62d ML-160: enable llm access to production logs 2026-05-04 08:36:00 +01:00
Claudio Ortolina 5073e681d2 Rename backlog documents 2026-05-04 07:56:21 +01:00
Claudio Ortolina 3f2f03849a ML-160: research and plan 2026-05-04 07:52:29 +01:00
Claudio Ortolina e57f9eddfb Update backlog.md to 1.45.0 2026-05-04 07:21:48 +01:00
Claudio Ortolina 51390974a8 ML-159: add cursor and visual mode to log browser 2026-05-03 22:34:50 +01:00
Claudio Ortolina 3512f812ba ML-159: plan review 2026-05-03 22:21:48 +01:00
Claudio Ortolina cb07e70d36 ML-159: research and plan 2026-05-03 22:14:49 +01:00
Claudio Ortolina 010c89774a ML-159: cancelled as not fit for purpose 2026-05-03 20:47:01 +01:00
Claudio Ortolina ef33287002 Remove tap report from tangled pipeline 2026-05-03 17:50:20 +01:00
Claudio Ortolina ebd19bf50b EXP: setup a tangled pipeline 2026-05-03 17:49:09 +01:00
Claudio Ortolina 5981970039 ML-157: implementation and configuration 2026-05-03 16:33:23 +01:00
Claudio Ortolina a6ef5996ed Backlog cleanup 2026-05-03 15:40:20 +01:00
Claudio Ortolina b7666168dc ML-158: plan review 2026-05-03 15:39:19 +01:00
Claudio Ortolina 4e0177c69d Offer to review plan at the end of task creation 2026-05-03 15:30:14 +01:00