42 lines
2.8 KiB
Markdown
42 lines
2.8 KiB
Markdown
# Changelog
|
|
|
|
## 0.1.0 — Unreleased
|
|
|
|
first public release
|
|
|
|
### What's In
|
|
|
|
- tui login screen with username/password fields, session switcher, and status messages
|
|
- supports x11, wayland, and tty sessions
|
|
- pam authentication via cgo (thread-locked for safety)
|
|
- faillock integration — detects lockouts, shows remaining attempts, admin bypass via ctrl+u
|
|
- conway's game of life background rendered at 30 fps with unicode half-block characters
|
|
- spring animation on switcher transitions
|
|
- shake animation on failed login
|
|
- caps lock indicator via ioctl
|
|
- configurable power controls (shutdown/reboot on f1/f2 by default)
|
|
- toml configuration with `$VARIABLE` substitution
|
|
- preview mode (`--preview`) to test the login screen without leaving your session
|
|
- utmpx user accounting (glibc only)
|
|
- x11 session setup — xauthority cookies, sigusr1 handshake, server timeout
|
|
- privilege dropping for child processes
|
|
- log piping with 64 mb cap
|
|
|
|
### Recent Fixes
|
|
|
|
- **utmpx time field portability** — replaced hardcoded `C.__uint32_t` / `C.__int32_t` casts with a C helper function (`auth/utmpx_time.h`) that lets the compiler handle type conversion. fixes build failure on systems where `ut_tv` uses `struct timeval` instead of the 32/64 compat struct
|
|
- **cgo pointer safety for pam** — replaced `unsafe.Pointer(&h)` (Go stack pointer passed to C) with `storeHandle`/`loadHandle` helpers that keep the `cgo.Handle` in C-heap memory. fixes `cgo argument has Go pointer to unpinned Go pointer` panic on Go 1.22+
|
|
- **pam conversation callback** — fixed `unsafe.Slice` using `&r` (pointer-to-pointer) as the backing array instead of `r` (the calloc'd response array), which wrote password bytes into random stack memory. also now only responds to `PAM_PROMPT_ECHO_OFF`/`PAM_PROMPT_ECHO_ON` messages — info and error messages get nil. fixes `pam_unix: auth could not identify password`
|
|
- **makefile `enable` and `update` targets** — `make enable` stops any running DM, disables the aliased display-manager, and enables latchd. `make update` runs uninstall → git pull → reinstall in one command
|
|
- **missing `extra/` directory** — added `extra/config.toml`, `extra/xsetup.sh`, `extra/lemurs.pam`, and `extra/lemurs.service` so `make install` can find them
|
|
- **makefile `deps` target** — added `make deps` to automatically install `libpam0g-dev` and `build-essential`, and verify go is present
|
|
- **readme overhaul** — rewrote for clarity: added "what problem does this solve", "how it works", known issues, simpler install instructions, and proper dependency listing
|
|
|
|
### What's Missing
|
|
|
|
- no tests
|
|
- session spawning uses `ForkExec` which is less clean than the original fork-then-exec model
|
|
- not all config options affect the rendering yet
|
|
- occasional terminal state corruption on abrupt exit
|
|
- automata background can flicker on rapid terminal resizes
|