55 Commits
Author SHA1 Message Date
kfj001 96e6742676 feat: initialize frontend unit test framework with Vitest
- Add vitest ^4.0.8, jsdom, @vitest/coverage-v8 to devDependencies
- Configure vitest.config.ts for jsdom environment with src/**/*.spec.ts pattern
- Simplify test-setup.ts (no TestBed needed for standalone unit tests)
- Add example spec file src/app/app.spec.ts (5 tests) covering App component logic
- Add npm scripts: test:unit, test:unit:watch, test:unit:coverage
- Verified: 5/5 frontend tests pass, 86/86 backend pytest tests still pass
2026-07-29 11:17:27 +00:00
Hermes Agent 501df79e5c feat: add test framework, unit tests, and GitLab CI pipeline
- Add pytest config in backend/pyproject.toml with asyncio mode and coverage
- Add backend/requirements-test.txt with pytest, pytest-cov, pytest-asyncio, aiosqlite
- Write 86 backend unit tests covering auth (JWT tokens), schemas (Pydantic
  models), config (Settings env overrides), log_parser (log parsing, IP
  resolution, geo data), models (SQLAlchemy table definitions + column
  defaults), and theme export
- Add Vitest config for Angular frontend (vitest.config.ts, src/test-setup.ts)
- Add .gitlab-ci.yml with stages: backend-test, frontend-test, backend-lint,
  docker-build, and quality-gate
- CI enforces 10% minimum coverage threshold for backend
2026-07-29 08:34:42 +00:00
kfj001 8d233b17a5 Updated media player filter. Updated larger hero image size. 2026-07-20 19:14:33 -07:00
kfj001 39b3e633a6 Fixes security issue: potential remote Path Traversal via File Upload 2026-07-19 05:55:58 +00:00
kfj001 222561c0b7 Fixes media player's problem with apostrophes. 2026-07-13 22:27:08 -07:00
kfj001 c02c0cdde9 Refactors admin page design to move each 'facet' of admin into its own component. 2026-07-10 01:14:30 -07:00
kfj001 a4093e86b1 fixes generated image download 2026-07-08 23:18:07 -07:00
kfj001 57198cd671 Fixes build results console log screen 2026-07-08 20:32:00 -07:00
kfj001 2c66a802c0 incorporates and implements mobile build service functionality. 2026-07-08 15:02:22 -07:00
Your Name 8cd54459ec Adds website theme serialization system 2026-07-06 06:52:18 +00:00
kfj001 562c28b6cb additional files 2026-07-04 18:40:40 +00:00
kfj001 7a04fa7c84 sets default admin creds in docker compose. first pass remote builder feature 2026-07-04 18:40:29 +00:00
kfj001 d2ab2240d5 transforms landing, about and schedule page content to data driven 2026-07-01 03:24:30 +00:00
kfj001 2ba6204c3d minor adjustment to media player fixing its width in desktop view 2026-06-30 23:58:30 +00:00
kfj001 9b8d4c0f01 layout changes with media player and negative spacing at top of screen. updated sqlalchemy init for postgres deployment 2026-06-30 21:06:35 +00:00
kfj001 87c9b0b8ab better color control 2026-06-30 03:52:00 +00:00
kfj001 f62f8188bf additional colors under admin control 2026-06-29 22:31:37 +00:00
kfj001 ee79662e5d adds color themeing support to the site 2026-06-29 21:23:51 +00:00
kfj001 bfd6c5bb9e sets the site title based on the configured name 2026-06-28 22:40:49 +00:00
kfj001 ea7025d911 Fixes bugs in map loading on admin/stats screen 2026-06-28 11:32:42 +00:00
kfj001 f3ba0bf5ba fixes initial loading of stats page 2026-06-28 11:23:34 +00:00
kfj001 db2ebd23fb adjusts display issues of world map on admin dash 2026-06-28 08:29:32 +00:00
kfj001 77d1c04d86 Adds visitor dashboard and related features 2026-06-28 06:41:23 +00:00
kfj001 a7cccbf170 component refactoring 2026-06-26 08:00:18 +00:00
kfj001 bce9f8663d Pro firefox enhancements 2026-06-26 06:23:38 +00:00
kfj001 5188777556 Fixes issue where media player was cutoff for mid width devices 2026-06-26 04:54:05 +00:00
kfj001 0263f978aa enlarges the media player button 2026-06-26 02:25:05 +00:00
kfj001 fd61246ceb fixes small gap between navbar and media player on mobile 2026-06-26 02:19:36 +00:00
kfj001 e2cc7baf3e makes sponsor takeover experience tigher and more friendly to long descriptions 2026-06-25 08:55:02 +00:00
kfj001 4bb21f70ed new app store links feature 2026-06-25 08:24:45 +00:00
kfj001 d9b0964f07 new media player functionality 2026-06-25 06:09:28 +00:00
kfj001 3419b997eb minor style fixes 2026-06-23 07:31:57 +00:00
kfj001 2295f841c9 Adds Underwriter's carousel and admin features 2026-06-23 06:50:08 +00:00
kfj001 9b95bef9c6 Retires Support/donation/tiers page in favor of simple configurable link 2026-06-23 00:30:47 +00:00
kfj001 86fbfa56bf enlargable show tiles 2026-06-22 19:55:06 +00:00
kfj001 3b61a131c1 database driven image uploader and storage service model 2026-06-22 19:29:06 +00:00
kfj001 9049b066ba Remove Programs tab and all supporting code
The Programs feature is superseded by Shows, which provides a more
flexible model with schedule slots. This commit removes all Programs
code across frontend and backend:

Frontend:
- Delete admin-program-form component (ts/html/scss)
- Delete program.service.ts and program.ts interface
- Remove Programs tab, form modal, and all CRUD logic from admin
  component (ts + html)

Backend:
- Delete programs API router
- Remove Program ORM model and ProgramCreate/Update/Response schemas
- Remove programs router registration from main.py
- Remove Program from seed data, seed helpers, and truncate/reset
2026-06-22 05:42:43 +00:00
kfj001 eb9a00f21a Adds the new shows admin screen and drives schedule from it 2026-06-22 04:19:51 +00:00
kfj001 e627fe3637 New programming screen 2026-06-21 21:55:55 +00:00
kfj001 96d0fef792 corrects redundant display of word 'radio' 2026-06-21 07:00:39 +00:00
kfj001 7883f1f978 minor change to banner 2026-06-21 06:12:28 +00:00
kfj001 1b537b3dfd data driven about us screen 2026-06-21 05:24:40 +00:00
kfj001 f52625b37b working basic site admin 2026-06-21 02:56:49 +00:00
kfj001 53d932655e fixed login dialog reporting issues and responsiveness problem 2026-06-20 21:13:03 +00:00
kfj001 e335e257a2 feat: add bootstrap admin auth docs and fix config loading
- Document bootstrap admin login via KMTN_ADMIN_USERNAME/PASSWORD
  env vars, including setup guide, curl examples, and config table
  entries across docker-compose and bare-metal deployment sections
- Add KMTN_JWT_SECRET_KEY to all deployment config examples and
  production checklist
- Fix docker-entrypoint.sh: remove unused API_UPSTREAM variable from
  config.json envsubst (only API_PUBLIC_URL is needed)
- Fix app-config.service: default apiBaseUrl now reads from Angular
  environment instead of empty string, and config.json path drops
  leading ./ for cleaner resolution
2026-06-20 07:18:47 +00:00
kfj001 f133d11123 working test deploy config 2026-06-19 22:55:00 -07:00
kfj001 c4cc268ea8 progressively working deploy scenario 2026-06-19 19:17:22 +00:00
kfj001 2d2b2d040b additional files 2026-06-19 17:37:19 +00:00
kfj001 266c2451f1 Admin mode. Data driven content sections. Bugfixes. 2026-06-19 17:36:35 +00:00
kfj001andClaude bd65455945 fix: resolve Pydantic date field shadowing causing 422 on event update
The field name 'date' in EventUpdate shadowed the 'date' type from
datetime, causing Pydantic v2 to interpret Optional[date] as
Optional[None] — rejecting all non-null values with a 422 error.

Fix: rename import to 'date as _date' and use '_date' in all
annotations. Also improve error handling in admin forms to properly
display 422 validation error messages.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 17:19:03 +00:00