Metadata-Version: 2.4
Name: microjournal
Version: 0.1.8
Summary: A distraction-free terminal writing environment
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: click<9,>=8.1
Requires-Dist: rich<14,>=13.7
Requires-Dist: textual<1,>=0.79
Requires-Dist: tomli-w<2,>=1.0
Requires-Dist: typer<1,>=0.12
Provides-Extra: nlp
Requires-Dist: spacy<4,>=3.7; extra == "nlp"
Provides-Extra: voice
Requires-Dist: faster-whisper<2,>=1.1; platform_machine != "armv6l" and extra == "voice"
Requires-Dist: numpy<3,>=1.26; extra == "voice"
Requires-Dist: sounddevice<1,>=0.5; extra == "voice"
Provides-Extra: dictation
Requires-Dist: faster-whisper<2,>=1.1; platform_machine != "armv6l" and extra == "dictation"
Requires-Dist: numpy<3,>=1.26; extra == "dictation"
Requires-Dist: sounddevice<1,>=0.5; extra == "dictation"
Provides-Extra: dev
Requires-Dist: numpy<3,>=1.26; extra == "dev"
Requires-Dist: pytest<9,>=8; extra == "dev"

# MicroJournal

MicroJournal is a distraction-free terminal writing environment.

It is built to run well in a normal terminal first. The UI can use a richer display backend when available, but the core app stays usable in mock mode without any special hardware setup.

## Install

```bash
uv tool install microjournal
```

If you want local voice dictation, install the optional dictation extra:

```bash
uv tool install "microjournal[dictation]"
```

If you want spaCy-powered NLP, install the optional NLP extra:

```bash
uv tool install "microjournal[nlp]"
```

The `voice` extra is kept as a compatibility alias for the same dictation stack. Both skip `faster-whisper` on Linux `armv6l`, because the upstream wheel stack is not available there.

## Local development

```bash
uv run microjournal
```

## Commands

- `microjournal` launches MicroJournal
- `microjournal run` launches MicroJournal explicitly
- `microjournal setup` runs first-time configuration
- `microjournal config` edits settings
- `microjournal sync` syncs notes
- `microjournal export` exports notes
- `microjournal pack export` writes a shareable visual pack JSON file
- `microjournal pack load` applies a visual pack from a JSON file
- `microjournal doctor` checks hardware and dependencies
- `microjournal dictate` runs push-to-talk local speech-to-text
- `microjournal service install` writes the systemd service
- `microjournal service enable` enables and starts the service
- `microjournal service disable` stops and disables the service
- `microjournal service status` prints systemd status
- `microjournal service logs` prints recent service logs
- `microjournal boot enable` enables direct boot into MicroJournal
- `microjournal boot disable` disables direct boot

## Storage

- Notes are stored as Markdown in `~/MicroJournal/journal`
- Config is stored in `~/.config/microjournal/config.toml`
- Autosave is enabled by default and runs every 5 seconds

## First run

1. Run `microjournal setup`
2. Launch `microjournal run`
3. Optionally enable direct boot with `microjournal boot enable`
4. Reboot if you want the service to start automatically

## Editor shortcuts

- `Ctrl+S` save
- `Ctrl+N` new note
- `Ctrl+F` search notes
- `Ctrl+P` command palette
- `Ctrl+T` theme maker
- `Ctrl+R` view note stats
- `Ctrl+E` export note stats
- `F8` toggle voice recording
- `Ctrl+Q` quit

## NLP stats

- The footer shows live writing stats plus spaCy-powered NLP stats when the optional `nlp` extra is installed
- Note stats export creates a companion `*.ner.md` file with entities and summary stats
- If you install the optional `nlp` extra and the `en_core_web_sm` model is available, named-entity results are richer

## Voice dictation

- The prototype uses the optional `dictation` extra, or the `voice` compatibility alias, with `faster-whisper` plus microphone capture, all locally
- Dictated text is inserted into the editor at the cursor
- Voice mode is push-to-talk: press `Voice` or `F8` to start, then press it again to stop

## Accessibility

- Large UI mode increases spacing, sidebar width, and footer breathing room
- The app does not force terminal font size; that is still controlled by your terminal emulator
- Visual packs let you share a theme, palette, and display setup as a JSON file
- Use the command palette to open the in-app Theme Maker, tweak a pack, and export it for sharing

## Roadmap

- Typing telemetry for sparklines and dashboards, focused on aggregated local writing data rather than raw keystrokes
- More visual pack presets for cyberdeck-style builds
- Better export/share flows for Reddit-ready screenshots and pack files
