all repos — bibel @ 78abfb5e4966de8ab9439d9ca9a09a85bef4b149

Unnamed repository; edit this file 'description' to name the repository.

78abfb5e
feat: EUPL license, man page, config path support

- Add `LICENCE.txt` with European Union Public Licence v1.2
- Add `docs/bibel.1` man page documenting all options, configuration,
  and algorithms
- Add `assets/logo.gif` and `assets/screenshot.svg` for README branding
- Rewrite `README.md` with clearer structure, usage examples, and build
  instructions
- Improve configuration loading (`internal/config.go`)
  - Support custom config file path via `--config` flag
  - Fix variable shadowing (`configPath` → `xdgConfigPath`) and path
    handling
  - Add fallback to XDG data directory for Bible JSON files
- Refactor output mode logic in `cmd/bibel.go`
  - Consolidate plain, formatted, and TUI modes into single conditional
    block
  - Respect `--numbered` and `--paragraphs` flags without requiring
    `--formatted`
  - Automatically use formatted mode when numbered or paragraphs are
    requested
- Update `SaveConfig` to use correct XDG config directory variable
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Sat, 18 Apr 2026 18:05:52 +0200
e61fc65a
feat: add verbose logging for config and bible loading

- Add `verbose` flag to `LoadConfig` and `LoadBible` functions
  - Implement `VerboseLogger` with conditional output (Info, Warning,
    Section, Path, Success)
  - Replace direct `fmt.Fprintf` calls in `internal/config.go` with
    structured logger
  - Add detailed logging for Bible metadata (name, language, verse
    count) in `internal/loader.go`
- Optimise `GetChapterText` by using `strings.Builder` instead of string
  concatenation
- Update `cmd/bibel.go` to pass `args.Verbose` when loading config and
  Bible data
- Add missing newlines at end of `easterprogression.go` and `config.go`
  (cosmetic)
- Update `CHANGELOG.md` with `0.11.0`
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Sat, 18 Apr 2026 15:07:19 +0200
995003ab
refactor: replace adaptive hex colours with ANSI terminal colours

- Remove light/dark background detection and adaptive colour logic
  - Delete `HasDarkBackground()` check and `lightDark()` helper in
    `tui/model.go`
  - Remove dependency on terminal colour detection from `lipgloss`
- Replace hex colour config with fixed ANSI colour codes
  - Delete `border_colour`, `header_colour`, `text_colour`,
    `quit_colour` from `internal/config.go` and
    `configs/config.example.toml`
  - Remove default and viper bindings for all four colour fields
  - Update `SaveConfig()` and `LoadConfig()` accordingly
- Rewrite `createStyles()` in `internal/tui/model.go` to use ANSI
  colours
  - Border and quit message: ANSI bright black (`8`)
  - Header: ANSI green (`2`)
  - Text: default terminal colour (empty string)
  - Verse numbers: ANSI bright black (`8`)
  - Easter error message: ANSI red (`1`)
  - Easter bar filled: bright white (`15`) on green (`2`)
  - Easter bar empty: bright black (`8`) on black (`0`)
- Update `README.md`
  - Change "Adaptive Styling" to "ANSI Colours"
  - Remove documentation for removed colour configuration options
  - Update Easter progress bar styling description
- Add `CHANGELOG.md` entry for version 0.10.0 with all changes and
  removals
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Sat, 18 Apr 2026 14:08:15 +0200
4d989dbd
feat: add Easter countdown progress bar to TUI

- Add EasterProgression calculator with Orthodox/Latin Easter support
  - New `internal/easterprogression.go` with time until Easter and
    progress percentage
  - Add `pkg/eastertime.go` (vendored eastertime library) for date
    calculations
- Extend configuration with `easter_type` (orthodox/latin) and `--latin`
  CLI flag
- Render progress bar in TUI showing remaining time and yearly progress
  percentage
- Refactor `cmd/bibel.go` output mode handling (sequential if-else
  instead of switch)
- Add `--verbose` flag for additional runtime information
- Update config validation and defaults (easter_type defaults to
  orthodox)
- Remove local `max` function (use Go 1.21+ built-in)
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Fri, 17 Apr 2026 22:25:17 +0200
63474ea3
feat: add numbered verse output and paragraph break handling

- Add `-n/--numbered` flag to print each verse on a numbered line with
  verse number
- Add `-g/--paragraphs` flag to render pilcrows (¶) as blank lines
  (paragraph breaks)
- Integrate both options into TUI with darker shade styling for verse
  numbers
- Add `numbered` and `paragraphs` fields to `[formatter]` section in
  TOML config
- BREAKING: Remove `-g` short flag from `--generate-config` (now
  `--paragraphs` uses `-g`)
- Update formatter with `NewFormatterWithFullConfig()` and
  `FormatSnippetWithOptions()` for option propagation
- Add `FormatSnippetForTUI()` method for TUI‑specific layout with
  numbered/paragraph modes
- Update `cmd/bibel.go`, `internal/config.go`, `internal/formatter.go`,
  `internal/tui/model.go`
- Update `README.md` with usage examples and configuration documentation
- Update `CHANGELOG.md` to version 0.8.0
- Update `configs/config.example.toml` with new formatter fields
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Fri, 17 Apr 2026 20:20:01 +0200
24fb7ab0
feat: add XDG data directory support for automatic Bible file discovery

- Add XDG data directory support (`internal/config.go`)
  - Automatically search `$XDG_DATA_HOME/bibel` for JSON files when
    `bible_path` is empty
  - Implement `findBibleFileInDataDir()` to locate first `.json` file
  - Print confirmation message when using Bible file from XDG data
    directory
  - Provide helpful error messages when directory missing or no JSON
    files found
- Change default configuration (`configs/config.example.toml`)
  - Set `bible_path` to empty string (uses XDG-standard data directory)
  - Update documentation comments to explain XDG behavior
- Improve error handling (`internal/dateprogression.go`)
  - Add check for zero total verses to prevent divide-by-zero panic
  - Return clear error when Bible file lacks books for selected reading
    mode
- Update `--generate-config` flag to create config with empty
  `bible_path` for XDG compatibility
- Revise `README.md` to document XDG data directory usage and update
  project structure
- Add `CHANGELOG.md` entry for version 1.5.0 with XDG support,
  configuration changes, and fixed edge cases
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Fri, 17 Apr 2026 17:31:50 +0200
9410cd8d
feat: add multiple reading modes and dynamic book name support

- Add `-r/--reading` command line option for reading scope selection
  - Support four modes: `evangelion` (default, Gospels only),
    `new_testament`, `old_testament`, `bible`
  - Overrides `reading_mode` setting in configuration file
- Enhance date progression to work with any Bible book range
  - `NewDateProgressionWithReadingMode()` accepts `ReadingMode`
    parameter
  - `getBookRange()` returns start/end books for each mode
  - Wrap correctly at boundaries of selected reading scope
- Remove hardcoded Polish book names from `BookIndex.String()`
  - Book names now read directly from JSON `book_name` field
  - `Formatter` requires `*Bible` parameter to retrieve book names
    dynamically
  - Update all formatter calls in `cmd/bibel.go` and `tui/model.go`
- Add `reading_mode` to TOML configuration (`config.toml`)
  - Validate against allowed values in `Config.Validate()`
  - Apply default `"evangelion"` for empty or missing values
- Fix configuration unmarshalling: apply defaults for empty fields
  - Handle empty `ReadingMode`, `OutputMode`, `BiblePath`,
    `BorderStyle`, `VersesPerDay`
- Update `README.md` and example config to document new reading modes
- Deprecate `GetTotalGospelVerses()` in favour of
  `GetTotalVersesForMode()`
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Fri, 17 Apr 2026 16:33:41 +0200
01c758ad
feat: add TOML configuration system with flexible output modes and customisation

- Add configuration system using Viper and go-toml (`internal/config.go`)
  - Support XDG base directory spec (`~/.config/bibel/config.toml`)
  - Implement `LoadConfig()`, `SaveConfig()`, `GenerateDefaultConfig()`
  - Validate output modes, border styles, verses per day
- Introduce three output modes: `tui` (default), `formatted` (ANSI), `plain`
  - Add `--formatted` and `--plain` CLI flags, plus `--generate-config`
  - Auto-detect terminal and fallback from `tui` to `formatted` when not a TTY
- Make verses per day configurable (`date_progression.verses_per_day`)
  - Update `DateProgression` to use configurable value in offset calculation
  - Replace all hardcoded `12` references with `dp.versesPerDay`
  - Adjust lookahead rule to use configured verses per day
- Add configurable TUI styling (`[tui]` section)
  - Border style: `rounded`, `double`, `single`, `hidden`
  - Custom colours for border, header, text, quit message (hex or named)
  - Option to hide the "Press q to quit..." message (`show_quit_message`)
- Make formatter header template configurable (`[formatter]` section)
  - Support variables: `{book}`, `{chapter}`, `{first_verse}`, `{second_verse}`
  - Allow disabling ANSI colours (`use_colours`)
- Update dependencies:
  - Add `github.com/spf13/viper`, `github.com/adrg/xdg`, `github.com/pelletier/go-toml/v2`
  - Remove unused indirect dependencies (e.g., `charmbracelet/colorprofile`, `x/term`)
- Add `configs/config.example.toml` as reference configuration
- Update `README.md` with full configuration documentation and new CLI usage
- Refactor code to pass `*Config` struct instead of separate flags
  - Remove `plainMode` boolean from TUI model, use `outputMode` field
  - Add `NewFormatterWithConfig`, `NewDateProgressionWithConfig`
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Fri, 17 Apr 2026 11:47:22 +0200
d229be0e
refactor: correct README and if/else to max
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Thu, 16 Apr 2026 20:09:32 +0200
0be549fc
feat: add interactive TUI with bubbletea and lipgloss

- Add TUI framework using `bubbletea` v0.24.0 for interactive terminal
interface
  - New `internal/tui/model.go` with bubbletea model and lipgloss
styling
  - Styled output with rounded borders, adaptive colours (light/dark
terminal)
  - Show "Press q to quit..." message below verse box
- Add smart TTY detection in `cmd/bibel.go`
  - Launch interactive TUI when stdout is a terminal
  - Fall back to formatted ANSI output in non‑interactive environments
  - Preserve `-p/--plain` flag to output plain verse text only
- Update dependencies: add `bubbletea` and `lipgloss`, remove indirect
`go-toml`
- Revise `README.md` to document TUI features, controls, and multiple
output modes
- Update `CHANGELOG.md` with version 1.2.0 and detailed changes
- Clean up formatting and add missing newlines at EOF in several
internal files
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Thu, 16 Apr 2026 19:34:18 +0200
8c9758c2
feat: add argument parsing and plain output flag

- Add command-line argument parsing using `go-arg` library
  - Define `Args` struct with `Plain` flag (`-p/--plain`)
  - Implement `Description()` method for program help text
  - Parse arguments in `main()` before loading Bible data
- Add `-p/--plain` flag to output plain text without chapter name or
verse numbers
  - Conditionally skip header formatting when flag is set
- Update `.gitignore` to exclude `bibel` binary
- Remove obsolete `bibel_date` binary and `bookmark.toml` file
- Update `CHANGELOG.md` with version 1.1.0 entry documenting new
features
- Add `github.com/alexflint/go-arg` and `go-scalar` dependencies to
`go.mod` and `go.sum`
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Thu, 16 Apr 2026 17:08:38 +0200
9696757c
feat: replace bookmark-based progression with date-based daily verses

- Remove bookmark persistence system and TOML dependency
  - Delete `internal/bookmark.go` and all bookmark manager logic
  - Remove `github.com/pelletier/go-toml/v2` from `go.mod`
  - Delete `test/bookmark.toml` and `invalid_bookmark.toml`
- Add date-based progression (`internal/dateprogression.go`)
  - Calculate reading position from day of year (12 verses per day)
  - Wrap yearly through all four Gospels (3779 total verses)
  - Apply lookahead rule when fewer than 12 verses remain in chapter
- Update `cmd/bibel.go` to use `DateProgression` instead of
`BookmarkManager`
  - Display today's verses without reading or writing any bookmark file
  - Support test dates via `GOOSE_TEST_DATE` environment variable
- Revise `README.md` to document date-based algorithm and usage
- Add `CHANGELOG.md` with version 1.0.0 and complete migration notes
- Clean up `.gitignore` (remove editor/IDE and old_code.ml entries)
- Keep `old_code.ml` as reference for original OCaml implementation
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Thu, 16 Apr 2026 16:36:42 +0200
963a6d5d
First commit
Maxwell Jensen 85795372+maxwelljens@users.noreply.github.com
Thu, 16 Apr 2026 15:27:15 +0200