b5d6eeedc0
refactor: phase 1 - testability improvements
...
- Add Config dataclass with get_config()/set_config() for injection
- Add Config.from_args() for CLI argument parsing (testable)
- Add platform font path detection (Darwin/Linux)
- Bound translate cache with @lru_cache(maxsize=500)
- Add fixtures for external dependencies (network, feeds, config)
- Add 15 tests for Config class, from_args, and platform detection
This enables testability by:
- Allowing config injection instead of global mutable state
- Supporting custom argv in from_args() for testing
- Providing reusable fixtures for mocking network/filesystem
- Preventing unbounded memory growth in translation cache
Fixes: _arg_value/_arg_int not accepting custom argv
2026-03-15 16:39:19 -07:00
f6f177590b
Merge pull request 'Modernize project with uv, pytest, ruff, and git hooks' ( #21 ) from enhance_portability into main
...
Reviewed-on: #21
2026-03-15 23:21:35 +00:00
9ae4dc2b07
fix: update ntfy tests for SSE API (reconnect_delay)
2026-03-15 15:16:37 -07:00
1ac2dec3b0
fix: use native hk staging in pre-commit hook
...
fix: add explicit check command to pre-push hook
2026-03-15 15:16:37 -07:00
757c854584
fix: apply ruff auto-fixes and add hk git hooks
...
- Fix pre-existing lint errors in engine/ modules using ruff --unsafe-fixes
- Add hk.pkl with pre-commit and pre-push hooks using ruff builtin
- Configure hooks to use 'uv run' prefix for tool execution
- Update mise.toml to include hk and pkl tools
- All 73 tests pass
fix: apply ruff auto-fixes and add hk git hooks
- Fix pre-existing lint errors in engine/ modules using ruff --unsafe-fixes
- Add hk.pkl with pre-commit and pre-push hooks using ruff builtin
- Configure hooks to use 'uv run' prefix for tool execution
- Update mise.toml to include hk and pkl tools
- Use 'hk install --mise' for proper mise integration
- All 73 tests pass
2026-03-15 15:16:37 -07:00
4844a64203
style: apply ruff auto-fixes across codebase
...
- Fix import sorting (isort) across all engine modules
- Fix SIM105 try-except-pass patterns (contextlib.suppress)
- Fix nested with statements in tests
- Fix unused loop variables
Run 'uv run pytest' to verify tests still pass.
2026-03-15 15:16:37 -07:00
9201117096
feat: modernize project with uv, add pytest test suite
...
- Add pyproject.toml with modern Python packaging (PEP 517/518)
- Add uv-based dependency management replacing inline venv bootstrap
- Add requirements.txt and requirements-dev.txt for compatibility
- Add mise.toml with dev tasks (test, lint, run, sync, ci)
- Add .python-version pinned to Python 3.12
- Add comprehensive pytest test suite (73 tests) for:
- engine/config, filter, terminal, sources, mic, ntfy modules
- Configure pytest with coverage reporting (16% total, 100% on tested modules)
- Configure ruff for linting with Python 3.10+ target
- Remove redundant venv bootstrap code from mainline.py
- Update .gitignore for uv/venv artifacts
Run 'uv sync' to install dependencies, 'uv run pytest' to test.
2026-03-15 15:16:37 -07:00
d758541156
Merge pull request 'feat: migrate Ntfy message retrieval from polling to SSE streaming, replacing poll_interval with reconnect_delay for continuous updates.' ( #20 ) from feat/ntfy-sse into main
...
Reviewed-on: #20
2026-03-15 20:50:08 +00:00
b979621dd4
Merge branch 'main' into feat/ntfy-sse
2026-03-15 20:50:02 +00:00
f91cc9844e
Merge pull request 'feat: add new font files to the fonts directory' ( #19 ) from feat/display into main
...
Reviewed-on: #19
2026-03-15 20:47:16 +00:00
bddbd69371
Merge branch 'main' into feat/display
2026-03-15 20:45:54 +00:00
6e39a2dad2
feat: migrate Ntfy message retrieval from polling to SSE streaming, replacing poll_interval with reconnect_delay for continuous updates.
2026-03-15 13:44:26 -07:00
1ba3848bed
feat: add new font files to the fonts directory
2026-03-15 13:30:08 -07:00
a986df344a
Merge pull request 'doc: Document new font selection command-line arguments, environment variables, and a dedicated font management section.' ( #18 ) from docs/update-readme into main
...
Reviewed-on: #18
2026-03-15 11:08:25 +00:00
c84bd5c05a
doc: Document new font selection command-line arguments, environment variables, and a dedicated font management section.
2026-03-15 04:07:24 -07:00
7b0f886e53
Merge pull request 'feat: add new font assets including CSBishopDrawn, CyberformDemo, and KATA.' ( #17 ) from feat/font-picker into main
...
Reviewed-on: #17
2026-03-15 11:01:39 +00:00
9eeb817dca
Merge branch 'main' into feat/font-picker
2026-03-15 11:01:31 +00:00
ac80ab23cc
feat: add new font assets including CSBishopDrawn, CyberformDemo, and KATA.
2026-03-15 04:01:06 -07:00
516123345e
Merge pull request 'feat/font-picker' ( #16 ) from feat/font-picker into main
...
Reviewed-on: #16
2026-03-15 10:53:16 +00:00
11226872a1
feat: Implement interactive font selection by scanning the fonts/ directory for .otf, .ttf, and .ttc files, adding new fonts and updating documentation.
2026-03-15 03:52:10 -07:00
e6826c884c
feat: Implement an interactive font face picker at startup, allowing selection of specific font faces from a font file.
2026-03-15 03:38:14 -07:00
0740e34293
Merge pull request 'style: Replace escaped parentheses with standard parentheses in the Mainline Renderer documentation.' ( #15 ) from feat/scalability into main
...
Reviewed-on: #15
2026-03-15 10:03:42 +00:00
1e99d70387
Merge branch 'main' into feat/scalability
2026-03-15 10:03:34 +00:00
7098b2f5aa
Merge pull request 'feat: Introduce a complementary color gradient for queue messages.' ( #14 ) from feat/display into main
...
Reviewed-on: #14
2026-03-15 10:01:57 +00:00
e7de09be50
style: Replace escaped parentheses with standard parentheses in the Mainline Renderer documentation.
2026-03-15 02:58:38 -07:00
9140bfd32b
feat: Introduce a complementary color gradient for queue messages.
2026-03-15 02:44:38 -07:00
c49c0aab33
Merge pull request 'refactor: Change firehose from a drifting overlay to a fixed bottom strip and message display from a top-pinned section to a centered overlay.' ( #13 ) from drift into main
...
Reviewed-on: #13
2026-03-15 09:27:16 +00:00
66c13b5829
refactor: Change firehose from a drifting overlay to a fixed bottom strip and message display from a top-pinned section to a centered overlay.
2026-03-15 02:26:44 -07:00
089c8ed66a
Merge pull request 'drift' ( #12 ) from drift into main
...
Reviewed-on: #12
2026-03-15 08:33:48 +00:00
086214f05e
style: remove firehose opaque row backdrop and background color
2026-03-15 01:31:44 -07:00
0f762475b5
feat: Apply a distinct background color to firehose lines.
2026-03-15 01:08:17 -07:00
b00b612da0
refactor: rename rendering components and variables for clarity, distinguishing between message, ticker, and scroll motion layers.
2026-03-15 00:58:36 -07:00
39dab4b22b
feat: Implement a drifting firehose overlay that scrolls independently over the main ticker content.
2026-03-15 00:49:58 -07:00
47f17e12ef
Merge pull request 'docs: Add ntfy.sh integration details, new CLI options, expanded configuration, and architecture overview to README.' ( #11 ) from docs/update-readme into main
...
Reviewed-on: #11
2026-03-15 07:19:14 +00:00
851c4a77b4
docs: Add ntfy.sh integration details, new CLI options, expanded configuration, and architecture overview to README.
2026-03-15 00:17:05 -07:00
cdbb6dfd1c
Merge pull request 'feat/scalability' ( #10 ) from feat/scalability into main
...
Reviewed-on: #10
2026-03-15 06:50:11 +00:00
45a202e955
Merge branch 'main' into feat/scalability
2026-03-15 06:50:02 +00:00
339510dd60
Please provide the diff for /Users/genejohnson/Dev/mainline/mainline.py to generate an accurate commit message.
2026-03-14 23:46:31 -07:00
9bd8115c55
feat: introduce the scroll engine with a main rendering loop for headlines, messages, and visual effects.
2026-03-14 23:36:56 -07:00
2c777729f5
feat: Introduce ntfy.sh message polling, content fetching with caching, and microphone input monitoring.
2026-03-14 23:34:23 -07:00
0e500d1b71
Merge pull request 'feat/display' ( #9 ) from feat/display into main
...
Reviewed-on: #9
2026-03-15 06:25:57 +00:00
3571e2780b
Merge branch 'main' into feat/display
2026-03-15 06:25:49 +00:00
dfd902fb90
feat: add module for fetching RSS feeds, parsing Project Gutenberg texts, and caching headlines
2026-03-14 22:51:50 -07:00
2e6b2c48bd
feat: Introduce visual effects module, enhance text rendering with SSAA, and add shifting gradient support.
2026-03-14 22:15:48 -07:00
1ff2e54586
Merge remote-tracking branch 'origin/feat/display' into feat/scalability
2026-03-14 22:06:35 -07:00
424332e065
feat: Implement a top-pinned ntfy message banner that reduces scrollable area instead of freezing the display.
2026-03-14 22:02:28 -07:00
f6ad89769f
feat: Implement OTF to terminal half-block rendering pipeline including font loading, text rasterization, word-wrap, and gradient coloring.
2026-03-14 21:53:47 -07:00
d3c403848c
feat: Introduce translate module for Google Translate integration and location-based language detection, and add a new filter module.
2026-03-14 21:00:24 -07:00
119ed193c0
feat: Add terminal module.
2026-03-14 20:57:53 -07:00
dcc3718012
refactor: Create engine package, extracting data sources to sources.py, and add refactoring documentation.
2026-03-14 20:56:24 -07:00