Metadata-Version: 2.4
Name: logtap
Version: 0.1.5
Summary: A cross-platform terminal toolkit; logtap read is a pure-terminal novel (.txt) reader
Author: logtap contributors
License-Expression: MIT
Project-URL: Homepage, https://github.com/example/logtap
Project-URL: Issues, https://github.com/example/logtap/issues
Keywords: terminal,cli,reader,novel,txt,console
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Terminals
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: textual>=0.47.0
Requires-Dist: rich>=13.0.0
Requires-Dist: chardet>=5.0.0
Dynamic: license-file

# logtap read

**日志风格终端小说阅读器** —— 摸鱼神器，视觉模仿服务器运行日志，低辨识度，支持书签、进度记忆、多主题、伪装模式。

基于 [Textual](https://textual.textualize.io/) 框架构建，纯终端 UI，无 GUI，兼容 Windows Terminal、iTerm2、Linux 终端。

## 核心特色

**日志伪装设计**：外观模拟 Linux 服务日志 / AI 助手输出，章节标题带日志级别标签，正文为标准日志文本样式，外人一眼看上去像在排查服务器问题或使用编程助手，而非阅读小说。

**多种伪装模式**：支持日志模式、AI 模式和纯净模式三种显示风格，按 `d` 键快速切换，适应不同摸鱼场景。

**轻量级设计**：纯键盘操作，所有配置保存本地，无网络功能，专注阅读体验。

## 安装

```bash
pip install logtap
```

（本地开发调试可直接 `pip install -e .`）

## 快速开始

```bash
# 直接打开指定文件
logtap read ./novel.txt

# 不指定文件会在当前目录选择 .txt 文件
logtap read
```

## 快捷键说明

| 按键        | 功能                             |
|-------------|----------------------------------|
| `↑` / `↓`   | 向上/向下滚动                     |
| `w` / `s`   | 上一页 / 下一页                  |
| `g`         | 跳转到指定行号                   |
| `m`         | 在当前行添加/移除书签            |
| `d`         | **切换伪装模式**（日志/AI/关闭） |
| `t`         | 循环切换三套主题                 |
| `q`         | 退出阅读器，自动保存当前阅读位置 |

## 动态伪装模式

按 `d` 键可在三种模式间切换，适应不同摸鱼场景：

### 模式1：日志模式（默认）
- 正文随机插入日志级别：`[INFO]`、`[DEBUG]`、`[WARN]`、`[ERROR]`
- 部分行添加时间戳前缀：`2026-07-28 14:32:15`
- 随机插入模拟系统日志噪音（不打断阅读）：
  - `[INFO] Database connection pool: 8/20 active`
  - `[DEBUG] Cache hit ratio: 87.3%`
  - `[WARN] Memory usage: 1461MB / 2048MB`
- 章节标题显示为关键错误：`[ERROR] Critical: 第一章 标题`

**适用场景**：假装在查看服务器日志、排查线上问题

### 模式2：AI助手模式
- 正文标记为 `[assistant]` AI回答格式
- 随机将部分内容渲染成代码 diff 格式：
  - `+ 新增内容`（绿色）
  - `- 删除内容`（红色）
- 随机插入 AI 思考链路噪音：
  - `<thinking>分析需求中...</thinking>`
  - `<thinking>检查代码结构...</thinking>`
- 章节标题伪装成任务：`## Task: 实现用户认证模块`

**适用场景**：假装在用 Claude Code / Cursor AI 写代码、调试程序

### 模式3：关闭伪装
- 纯净的日志风格（每行只加 `[TEXT]` 前缀）
- 适合不需要伪装的私密环境

## 三套主题

1. **日志仿真模式**（默认）：黑底 + 彩色日志标签（`[WARN]` 黄色、`[INFO]` 蓝色），模拟服务器日志输出
2. **护眼暗色模式**：深灰底 + 暖色调文字，适合长时间阅读
3. **极简黑白模式**：纯黑底白字，移除所有颜色，最高隐蔽度

按 `t` 键循环切换，选择会被记住。

## 功能特性

- **纯本地文本**：只读取本地 `.txt` 文件，不含任何网络爬虫或在线下载功能
- **编码自动识别**：自动识别 UTF-8 / GBK / GB2312 / BIG5 / UTF-16 等编码
- **大文件优化**：仅扫描一次建立"行偏移索引"，正文按需 `seek` 读取，不会把整本书载入内存，GB 级文本同样流畅
- **东亚宽字符换行**：按终端可视宽度自动换行，中日韩字符按 2 列宽计算，不会出现超长行溢出
- **章节粗识别**：通过"第 N 章/回/节"标题模式与常见分割线（`----`、`====`等）自动标记章节
- **独立进度与书签**：每本书按绝对路径独立记录阅读进度和书签列表，下次打开自动恢复到上次阅读位置

## 配置文件

阅读进度、书签、主题设置保存在跨平台配置目录下的 JSON 文件中：

- Windows: `%USERPROFILE%\.logtap\read_config.json`
- macOS / Linux: `~/.logtap/read_config.json`

写入采用"临时文件 + 原子替换"策略，避免程序异常退出导致配置损坏；若配置文件本身已损坏，会自动备份为 `read_config.json.corrupted-<timestamp>.bak` 并回退到默认设置，不影响正常启动。

## 项目结构

```
logtap/
├── cli.py                  # logtap 主命令行入口，分发子命令
└── read/
    ├── __init__.py         # 对外暴露 run(path)
    ├── app.py              # Textual 主应用：快捷键、主题切换
    ├── log_style_render.py # 日志风格文本渲染组件
    ├── reader_core.py      # 编码识别、行索引、宽字符换行、章节识别
    ├── storage.py          # 进度/书签/设置持久化
    ├── themes.py           # 主题样式定义
    └── disguise.py         # 伪装模式渲染逻辑
```

## 依赖

- [`textual`](https://pypi.org/project/textual/)：现代化终端 UI 框架
- [`rich`](https://pypi.org/project/rich/)：富文本渲染（Textual 底层依赖）
- [`chardet`](https://pypi.org/project/chardet/)：编码检测辅助

## 开发与测试

```bash
pip install -e .
pip install pytest
pytest tests/ -v
```

## 设计理念

区别于传统终端阅读器（侧边目录 + 正文区域的常规布局），本项目**主打动态伪装系统**：

- **两套伪装模式随时切换**（`d` 键）：日志模式模拟服务器运行日志，AI模式模拟编程助手输出
- **智能噪音注入**：随机在正文间插入伪装噪音行，不干扰阅读连续性
- **视觉真实性**：章节标题根据模式动态调整，噪音行使用弱化样式退居背景

与市面上所有终端小说阅读器的根本区别：**不是"做了个阅读器顺便能伪装"，而是"做了个伪装系统顺便能看小说"**。

## 许可证

MIT License，详见 [LICENSE](LICENSE)。
