Skip to content

feat: CRT scanlines, editable Neo lines, multi-screen sync, options header - #36

Closed
patrickschaper wants to merge 18 commits into
mainfrom
development
Closed

feat: CRT scanlines, editable Neo lines, multi-screen sync, options header#36
patrickschaper wants to merge 18 commits into
mainfrom
development

Conversation

@patrickschaper

Copy link
Copy Markdown
Owner

Merges development into main.

  • Editable Neo message lines with drag-reorderable table editor
  • CRT scanlines overlay with 0–100% intensity slider in options (default 35%)
  • Multi-screen sync: scene start always at next 10s boundary
  • Synced number scene blackout: fixed 10 rounds across all screen widths
  • Cursor keeps blinking after "Call trans opt" finishes typing
  • Options sheet header with title and right-aligned About link
  • Fixed release workflow CHANGELOG generation (replaced conventional-changelog-action with git log shell step)

LouisFaure and others added 18 commits May 15, 2026 14:11
- add characters field to options model and configure sheet
- make glyph pool instance-level in renderer
- deduplicate custom characters and fall back to full default set when empty
- update README with new option
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- add CHANGELOG.md with history from all previous releases
- use TriPSs/conventional-changelog-action in the prepare job to
  generate a new section from commits since the last tag
- include CHANGELOG.md in the release branch commit

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- extract the current version's section from CHANGELOG.md
- pass it to gh release create via --notes-file

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- supportedScalars returns union of default pool and active pool so
  custom glyphs (e.g. ATGC) are included in the glyph cache
- resolveGlyphPool filters out whitespace, control, and non-grapheme
  scalars so invalid input fails gracefully instead of blank columns
- sanitized() trims and deduplicates characters so storage, Equatable
  comparison, and rendering all use a canonical form
- widen the Characters text field to ~24 M-widths so longer custom
  sets remain fully visible in the options sheet

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- add diacritic filter to sanitized() so persisted value matches rendered glyphs
- cache supportedScalars before loop in makeNativeGlyphCaches to avoid repeated recomputation
- preserve activeGlyphPool insertion order in supportedScalars instead of iterating a Set
- align README Characters description with charactersDescription string

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
feat: add custom character set option
feat: add CHANGELOG and auto-update on release
- conventional-changelog-action defaults to v prefix
- repo uses unprefixed tags (e.g. 0.0.9)
- without tag-prefix: "" the action cannot find the previous tag
  and generates changelog from the wrong commit range

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
fix: set tag-prefix to empty string in changelog action
- add neoMessageLines field to MatrixScreenSaverOptions with persist/load/save
- add Edit… button in options sheet opening a secondary lines editor sheet
- editor uses NSTableView with drag-and-drop row reordering via grab handle
- support add/remove/reset lines; 1–10 lines, max 256 chars each
- pass custom lines through renderer config to NeoMessageScene.reset
- keep four original lines as defaults

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- increase sync window to 10 s to tolerate slow-waking screens
- sceneStartTime always targets the next 10-second boundary so no
  display fast-forwards past the start of the Neo scene
- replace fraction-based blackout rounds with a fixed count of 10 so
  all screens finish the blackout at the same wall-clock time regardless
  of display width
- keep cursor blinking after 'Call trans opt' finishes typing through
  the pause before 'Trace program: running' replaces it

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Changes

- Add editable Neo message lines in the options sheet behind an `Edit…`
button
- Secondary editor sheet with `NSTableView`; drag handle (⠿) for
reordering rows
  - Add / remove lines with +/− buttons; Reset to defaults
- 1–10 lines, max 256 characters each; persisted via
`ScreenSaverDefaults`
- Increase sync window to 10 s so slow-waking screens join the same
scene sequence
- Fix Neo scene being skipped on late-activating screens:
`sceneStartTime` now always targets the next 10-second boundary,
eliminating fast-forward
- Sync number scene blackout end across screens with different widths:
fixed 10 blackout rounds regardless of column count
- Keep cursor blinking on the `Call trans opt` line after typing
completes, until the line is replaced
feat: add CRT scanlines effect with intensity slider

- draw 1px dark stripes every 2px over the terminal area each frame
- intensity controlled by a 0–100% slider in the options sheet (default 35%)
- alpha maps directly to percentage: 100% = fully opaque
- effect is skipped entirely when intensity is 0

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- add 'macOS Matrix Screen Saver' headline at top of sheet (left-aligned)
- add 'About' link button that opens the GitHub repository

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- replace NSStackView+spacer with plain NSView container
- pin title to leading, About button to trailing via explicit anchors
- avoids constraint conflict with NSStackView edge insets

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- replace NSStackView+spacer with plain NSView container
- pin title to leading, About button to trailing via explicit anchors
- avoids constraint conflict with NSStackView edge insets

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
fix: generate CHANGELOG entry from git log in release workflow

- remove conventional-changelog-action which computed its own version
  (feat: commits caused it to bump minor instead of using our patch bump)
- replace with shell step that parses conventional commits since last tag
- keeps existing ## [x.y.z] - date format so awk extraction in publish works
- falls back to latest git tag if previous version tag is not found

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants