agent-diary 4.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agent_diary-4.3.0/.codex-plugin/plugin.json +36 -0
- agent_diary-4.3.0/CHANGELOG.md +141 -0
- agent_diary-4.3.0/LICENSE +21 -0
- agent_diary-4.3.0/MANIFEST.in +7 -0
- agent_diary-4.3.0/PKG-INFO +599 -0
- agent_diary-4.3.0/README.en.md +566 -0
- agent_diary-4.3.0/README.md +570 -0
- agent_diary-4.3.0/SECURITY.md +53 -0
- agent_diary-4.3.0/pyproject.toml +75 -0
- agent_diary-4.3.0/setup.cfg +4 -0
- agent_diary-4.3.0/skills/diary/SKILL.md +34 -0
- agent_diary-4.3.0/skills/diary/agents/openai.yaml +7 -0
- agent_diary-4.3.0/skills/diary-notion/SKILL.md +160 -0
- agent_diary-4.3.0/skills/diary-notion/agents/openai.yaml +7 -0
- agent_diary-4.3.0/src/agent_diary.egg-info/PKG-INFO +599 -0
- agent_diary-4.3.0/src/agent_diary.egg-info/SOURCES.txt +100 -0
- agent_diary-4.3.0/src/agent_diary.egg-info/dependency_links.txt +1 -0
- agent_diary-4.3.0/src/agent_diary.egg-info/entry_points.txt +4 -0
- agent_diary-4.3.0/src/agent_diary.egg-info/requires.txt +11 -0
- agent_diary-4.3.0/src/agent_diary.egg-info/top_level.txt +1 -0
- agent_diary-4.3.0/src/claude_diary/__init__.py +3 -0
- agent_diary-4.3.0/src/claude_diary/__main__.py +5 -0
- agent_diary-4.3.0/src/claude_diary/cli/__init__.py +213 -0
- agent_diary-4.3.0/src/claude_diary/cli/config.py +190 -0
- agent_diary-4.3.0/src/claude_diary/cli/maintenance.py +146 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_common.py +30 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_ensure.py +190 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_init.py +148 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_ops.py +553 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_push/__init__.py +397 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_push/artifacts.py +146 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_push/ordinals.py +70 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_push/preview.py +59 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_push/properties.py +234 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_push/relations.py +119 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_push/tasks.py +75 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_push/validate.py +97 -0
- agent_diary-4.3.0/src/claude_diary/cli/notion_review.py +147 -0
- agent_diary-4.3.0/src/claude_diary/cli/search.py +158 -0
- agent_diary-4.3.0/src/claude_diary/cli/setup.py +675 -0
- agent_diary-4.3.0/src/claude_diary/cli/stats.py +216 -0
- agent_diary-4.3.0/src/claude_diary/cli/team.py +72 -0
- agent_diary-4.3.0/src/claude_diary/cli/write.py +309 -0
- agent_diary-4.3.0/src/claude_diary/config.py +112 -0
- agent_diary-4.3.0/src/claude_diary/core.py +227 -0
- agent_diary-4.3.0/src/claude_diary/dashboard.py +308 -0
- agent_diary-4.3.0/src/claude_diary/exporters/__init__.py +0 -0
- agent_diary-4.3.0/src/claude_diary/exporters/base.py +30 -0
- agent_diary-4.3.0/src/claude_diary/exporters/discord.py +73 -0
- agent_diary-4.3.0/src/claude_diary/exporters/github.py +100 -0
- agent_diary-4.3.0/src/claude_diary/exporters/loader.py +154 -0
- agent_diary-4.3.0/src/claude_diary/exporters/notion.py +77 -0
- agent_diary-4.3.0/src/claude_diary/exporters/notion_hierarchical.py +680 -0
- agent_diary-4.3.0/src/claude_diary/exporters/notion_views.py +996 -0
- agent_diary-4.3.0/src/claude_diary/exporters/obsidian.py +80 -0
- agent_diary-4.3.0/src/claude_diary/exporters/slack.py +60 -0
- agent_diary-4.3.0/src/claude_diary/formatter.py +710 -0
- agent_diary-4.3.0/src/claude_diary/hook.py +80 -0
- agent_diary-4.3.0/src/claude_diary/i18n.py +172 -0
- agent_diary-4.3.0/src/claude_diary/indexer.py +141 -0
- agent_diary-4.3.0/src/claude_diary/lib/__init__.py +0 -0
- agent_diary-4.3.0/src/claude_diary/lib/audit.py +127 -0
- agent_diary-4.3.0/src/claude_diary/lib/categorizer.py +64 -0
- agent_diary-4.3.0/src/claude_diary/lib/git_info.py +212 -0
- agent_diary-4.3.0/src/claude_diary/lib/notion_cache.py +126 -0
- agent_diary-4.3.0/src/claude_diary/lib/parser.py +216 -0
- agent_diary-4.3.0/src/claude_diary/lib/secret_scanner.py +85 -0
- agent_diary-4.3.0/src/claude_diary/lib/stats.py +80 -0
- agent_diary-4.3.0/src/claude_diary/lib/team_security.py +210 -0
- agent_diary-4.3.0/src/claude_diary/log.py +42 -0
- agent_diary-4.3.0/src/claude_diary/team.py +336 -0
- agent_diary-4.3.0/src/claude_diary/types.py +63 -0
- agent_diary-4.3.0/src/claude_diary/writer.py +45 -0
- agent_diary-4.3.0/tests/test_audit.py +49 -0
- agent_diary-4.3.0/tests/test_categorizer.py +46 -0
- agent_diary-4.3.0/tests/test_cli.py +1371 -0
- agent_diary-4.3.0/tests/test_codex_plugin.py +161 -0
- agent_diary-4.3.0/tests/test_config.py +57 -0
- agent_diary-4.3.0/tests/test_core.py +480 -0
- agent_diary-4.3.0/tests/test_dashboard.py +320 -0
- agent_diary-4.3.0/tests/test_exporters.py +789 -0
- agent_diary-4.3.0/tests/test_formatter.py +463 -0
- agent_diary-4.3.0/tests/test_git_info.py +366 -0
- agent_diary-4.3.0/tests/test_hook.py +212 -0
- agent_diary-4.3.0/tests/test_i18n.py +135 -0
- agent_diary-4.3.0/tests/test_indexer.py +311 -0
- agent_diary-4.3.0/tests/test_notion_cache.py +121 -0
- agent_diary-4.3.0/tests/test_notion_ensure.py +175 -0
- agent_diary-4.3.0/tests/test_notion_hierarchical.py +769 -0
- agent_diary-4.3.0/tests/test_notion_init.py +156 -0
- agent_diary-4.3.0/tests/test_notion_ops.py +272 -0
- agent_diary-4.3.0/tests/test_notion_push.py +1074 -0
- agent_diary-4.3.0/tests/test_notion_review.py +132 -0
- agent_diary-4.3.0/tests/test_notion_views.py +607 -0
- agent_diary-4.3.0/tests/test_parser.py +115 -0
- agent_diary-4.3.0/tests/test_secret_scanner.py +85 -0
- agent_diary-4.3.0/tests/test_setup.py +419 -0
- agent_diary-4.3.0/tests/test_stats.py +255 -0
- agent_diary-4.3.0/tests/test_team.py +631 -0
- agent_diary-4.3.0/tests/test_team_security.py +142 -0
- agent_diary-4.3.0/tests/test_write.py +298 -0
- agent_diary-4.3.0/tests/test_writer.py +62 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-diary",
|
|
3
|
+
"version": "4.3.0",
|
|
4
|
+
"description": "Record AI coding sessions as Markdown diaries or task-based Notion entries.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "solzip",
|
|
7
|
+
"url": "https://github.com/solzip"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/solzip/agent-diary",
|
|
10
|
+
"repository": "https://github.com/solzip/agent-diary",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"diary",
|
|
14
|
+
"productivity",
|
|
15
|
+
"work-log",
|
|
16
|
+
"notion",
|
|
17
|
+
"codex",
|
|
18
|
+
"claude-code"
|
|
19
|
+
],
|
|
20
|
+
"skills": "./skills/",
|
|
21
|
+
"interface": {
|
|
22
|
+
"displayName": "Agent Diary",
|
|
23
|
+
"shortDescription": "Record Codex work sessions to Markdown or Notion.",
|
|
24
|
+
"longDescription": "Agent Diary adds Codex skills for writing manual Markdown diary entries and pushing task-sized session records to a hierarchical Notion database. It keeps project, purpose, task group, branch, status, categories, files, commands, commits, and dependencies available as filterable Notion columns.",
|
|
25
|
+
"developerName": "solzip",
|
|
26
|
+
"category": "Productivity",
|
|
27
|
+
"capabilities": [
|
|
28
|
+
"Interactive",
|
|
29
|
+
"Write"
|
|
30
|
+
],
|
|
31
|
+
"defaultPrompt": [
|
|
32
|
+
"Use $diary to record this session.",
|
|
33
|
+
"Use $diary-notion to push this session to Notion."
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [4.3.0] - 2026-08-11
|
|
11
|
+
|
|
12
|
+
### Changed — 이름
|
|
13
|
+
|
|
14
|
+
- **`claude-diary` → `agent-diary`**: 저장소, PyPI 배포명, 기본 CLI 명령을 한 이름으로 통일. 저장소가 `working-diary`, 설치가 `pip install claude-diary`, 명령이 `working-diary`로 갈라져 있어 README가 그 불일치를 해명해야 했고, 실제로 PyPI trusted publisher가 저장소 이름 변경 때문에 깨진 적이 있다
|
|
15
|
+
- `working-diary`, `claude-diary` 명령은 alias로 계속 동작
|
|
16
|
+
- **import 패키지는 `claude_diary`로 유지**. `install`이 사용자 `settings.json`에 `python -m claude_diary.hook`을 기록하므로, 바꾸면 기존 사용자의 Stop Hook이 조용히 멈춘다
|
|
17
|
+
- config 디렉터리(`claude-diary/`)와 일지 디렉터리(`~/working-diary/`)도 유지. 사용자 데이터와 자격증명이 들어 있고, 옮기면 조용히 갈라진다
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
- **`/diary-notion` 슬래시 커맨드**: 현재 세션을 작업 단위로 분리해 Notion 업무일지 DB에 push
|
|
21
|
+
- 계층 구조: 루트 페이지 → 연도 페이지 → 단일 Entries DB (자동 생성)
|
|
22
|
+
- 작업 분리: branch 경계 → 의미 단위 (semantic-first)
|
|
23
|
+
- LLM은 슬래시 커맨드 안의 Claude가 처리 — 별도 Anthropic API 키 불필요
|
|
24
|
+
- 멱등성: Session ID + Task Index 컬럼으로 skip, `--force` 시 archive&recreate
|
|
25
|
+
- 에러 분기: 401/403 fail fast, 400 skip, 429/5xx retry, 404 자동 재생성
|
|
26
|
+
- **`claude-diary diary-notion init`**: 대화형 셋업 (token + 페이지 URL/ID + 권한 검증)
|
|
27
|
+
- **`claude-diary diary-notion push --input <file>` `--force`**: 임시 JSON 파일 받아 Notion에 push
|
|
28
|
+
- **Codex 표준 지원**: `$diary`, `$diary-notion` skills + `.codex-plugin/plugin.json`
|
|
29
|
+
- **중립 CLI alias**: `working-diary` 명령을 `claude-diary`와 동일하게 제공
|
|
30
|
+
- **DB 자동 생성 스키마**: Name, Date, Work Period, Project, Purpose, Branch, Status, Task Group, Parent Task, Sub-items, Depends On, Priority, Next Action, Blocked, Block Reason, Carryover, Review Status, Last Reviewed, Categories, Files, Commits, Lines, Session ID, Task Index
|
|
31
|
+
- **Notion native 하위항목 연결**: push가 부모-자식을 Notion **native sub-item 관계**(UI에서 1회 활성화, locale 이름 예 `상위 항목`/`하위 항목`)에 기록해 실제 접기/펼치기 nesting을 구동. 코드가 native 관계를 이름 하드코딩 없이 자동 탐지(소거법 + locale 토큰). `ensure`가 `작업 계층` view를 native 관계로 연결하고 기존 `Parent Task` 데이터를 native로 이전(멱등). native 미활성 시 작업 기록은 진행하고 활성화 안내 출력. 기존 영문 `Parent Task`/`Sub-items` 관계는 legacy로 유지·숨김, `Depends On`은 선행 관계로 유지
|
|
32
|
+
- **접힌 근거 중심 Notion 본문**: page body를 핵심 callout 1개, 결과 체크리스트, 작업 한눈에 표, 영향 bullet, 검증 checklist, 리스크/다음 액션, 접힌 부록 구조로 압축
|
|
33
|
+
- **Working Diary OS 비전 문서**: Structure → Views → Operations → Intelligence → Multi-project OS로 확장하는 최고모델 설계, 최소 명령 원칙, 전날 todo 기반 `today-plan`, schema/view conflict drift 관리 방향 추가
|
|
34
|
+
- **2차 View 설계 문서**: `working-diary diary-notion ensure`, `--year`, `--dry-run`과 Core Views 5개, operating views 5개, `Work Period`와 `Sub-items` 기반 schema v7 방향, 하위 항목 데이터 구조, sub-item UI best-effort/fallback, partial failure/exit code 정책 정리
|
|
35
|
+
- **`working-diary diary-notion ensure` 구현**: schema v7 `Work Period`, native sub-item relation, Priority/Blocked/Review 운영 컬럼 보장, Core Views 5개와 Operating Views 5개 생성/검증/update, `--year`, `--dry-run`, required setting repair 지원
|
|
36
|
+
- **`working-diary diary-notion ops` 구현**: Notion Entries DB를 읽기 전용으로 조회해 blocked/review/next action/stale/work days/today-plan 후보/task group/project/parent progress/부모 상태 제안 운영 신호를 요약
|
|
37
|
+
- **Phase 3 ensure diagnostics**: schema/view conflict reason을 `missing_filter`, `missing_property`, `subitem_missing`, `permission_or_auth`, `api_failure`로 분류하고 repair plan/action/apply 가능 여부를 출력
|
|
38
|
+
- **`claude-diary write --input <file>`**: Codex skill이 생성한 JSON으로 수동 Markdown 일지 작성
|
|
39
|
+
- **`lib/notion_cache.py`**: 연도 페이지/DB/행 ID 캐시 (root_page_id 변경 시 자동 무효화)
|
|
40
|
+
- **`lib/git_info.py` 확장**: `get_branch_for_commit`, `get_head_branch`, `get_commit_info`, `get_diff_stat_for_commits`
|
|
41
|
+
- **테스트 보강**: Notion Purpose, Codex plugin/skills, Codex JSON input 경로 검증 (전체 737 통과)
|
|
42
|
+
|
|
43
|
+
- **`working-diary diary-notion review`**: 검토 대기 row를 읽기 전용으로 나열하고, `--apply`로 `Reviewed` + `Last Reviewed=오늘` 기록. 검토 상태를 사람 소유로 전환 — push는 항상 `Needs Review`로 기록하고 에이전트는 이 필드를 작성하지 않음
|
|
44
|
+
- **작업 그룹 차수**: 같은 `Task Group`에 이미 기록된 세션 수를 세어 제목에 `(N차)` 부여 (컬럼 추가 없음). 세션 단위로 집계하고 자기 세션은 제외하므로 재push해도 밀리지 않음
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
- `cli/setup.py` 일반화: `SLASH_COMMANDS` dict로 다중 슬래시 커맨드 관리
|
|
48
|
+
- **Notion 뷰 10개 → 5개**: `작업 계층` / `오늘 작업` / `Blocked` / `전날 미완료` / `작업 그룹별`. 각 뷰 컬럼은 최대 5개. `_property_config`가 property map 전체를 순회해 spec에 없는 컬럼을 전부 숨기므로, 스키마가 늘어도 테이블이 넓어지지 않음. 더 이상 관리하지 않는 뷰는 `ensure`가 목록으로 보고 (자동 삭제하지 않음)
|
|
49
|
+
- **Notion 본문**: 배경/범위/접근/상태 서술 표를 부록 토글로 접고 결과·검증 섹션을 확대 (성과 2→4, 검증 1→3, 상한 4→7)
|
|
50
|
+
- **`Work Period`를 명령 실행일에 고정**: 단일 날짜는 실행일로 수렴, 범위는 실행일을 넘지 못하게 clamp. 에이전트가 넣은 세션 날짜나 예시 날짜가 Notion에 들어가지 않음
|
|
51
|
+
- **에이전트 계약**: 근거 없는 선택 필드는 생략하도록 변경 (`priority`, `work_period`). 예시 JSON의 하드코딩 날짜 제거
|
|
52
|
+
- ruff 룰 확대: `E9,F63,F7,F82` → `E4,E7,E9,E501,F,B`
|
|
53
|
+
- CI가 모든 브랜치에서 실행되고 `[notion]` extra까지 설치
|
|
54
|
+
- **작업한 순서대로 row 정렬**: 한 push가 만드는 row는 `Date`가 전부 같아 `Date desc`만으로는 하루치 순서가 임의로 결정됐다. 5개 뷰 전부 `Task Index` 오름차순을 2차 정렬로 사용한다. 정렬은 숨김 속성도 참조할 수 있어 테이블 폭 비용은 없다. `_verify_view`도 이 정렬을 검사하므로 이전에 만든 뷰는 `ensure`가 복구한다. 한계: `Task Index`는 push마다 리셋되므로 같은 날짜에 두 번 push하면 두 묶음이 섞인다
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
- **`ensure`가 데이터베이스의 select 값을 전부 지우던 문제**: `_ensure_db_schema_extensions`가 매 실행마다 확장 속성 전체를 PATCH했다. `{"select": {}}`는 no-op이 아니라 옵션 목록을 빈 것으로 교체하며, Notion은 제거된 옵션을 참조하던 **모든 row에서 그 속성을 비운다**. 결과적으로 `ensure`를 돌릴 때마다 `Status` `Purpose` `Task Group` `Priority` `Review Status` `Schema Version`이 DB 전체에서 조용히 비워졌다 (실측: 2026 DB 497 row에서 6개 속성 전멸, 옵션 수 0). base schema에 있어 재PATCH되지 않는 `Project` `Branch`는 무사했다. 이제 현재 property map을 먼저 읽고 실제로 없는 속성만 전송하므로 기존 속성을 다시 쓰지 않는다
|
|
58
|
+
- **처음 쓰는 task group을 오류로 처리하던 문제**: Notion은 아직 존재하지 않는 select 옵션을 지정한 필터를 거부하므로, 새 task group마다 차수 조회가 400을 냈다. 조회는 best-effort라 push 자체는 성공했지만 로그가 두 화면씩 찍혔다 — Notion의 select 오류가 기존 옵션을 전부 나열하는데 그 메시지를 자르지 않고 그대로 흘려보냈기 때문이다. 알 수 없는 옵션은 선행 세션이 없다는 뜻이므로 조용히 1차로 확정한다. `short_error`도 이름값대로 200자에서 자른다
|
|
59
|
+
- **폐기된 뷰 경고가 `unknown`으로 분류되던 문제**: 손으로 삭제하라는 안내 바로 밑에 "문제를 확인한 뒤 `ensure`를 다시 실행하라"가 붙었다. 재실행으로는 해결되지 않는 항목이라 별도로 분류한다
|
|
60
|
+
- **dry-run이 artifact ref를 잘라서 보여주던 문제** 및 v2 artifact 리포트 출력 보강
|
|
61
|
+
- Notion native 하위항목이 비활성일 때 계층 연결을 조용히 건너뛰던 문제 — 실패로 집계하고 입력 JSON을 보존해 재실행 가능
|
|
62
|
+
- `formatter.py`: Notion API blocks 빌더 (`build_notion_blocks`) 추가 및 compact executive body 렌더링 보강
|
|
63
|
+
- 설계 문서: [`docs/02-design/features/diary-notion-hierarchical.design.md`](docs/02-design/features/diary-notion-hierarchical.design.md)
|
|
64
|
+
|
|
65
|
+
## [4.2.0] - 2026-04-29
|
|
66
|
+
|
|
67
|
+
### Added
|
|
68
|
+
- **`/diary` 슬래시 커맨드**: 세션 중 수동으로 Markdown 작업일지 작성
|
|
69
|
+
- **`claude-diary install` / `uninstall`**: pip 설치 후 Claude Code Stop Hook과 슬래시 커맨드를 등록/해제
|
|
70
|
+
- 오프라인 HTML 대시보드 (외부 CDN 의존 제거)
|
|
71
|
+
- 구조적 로깅 (`log.py`)
|
|
72
|
+
- 크로스플랫폼 경로/인코딩 fallback
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
- `cli.py` 단일 파일(823줄)을 `cli/` 서브패키지로 분리
|
|
76
|
+
- README 리뉴얼 + 데모 SVG + FAQ
|
|
77
|
+
|
|
78
|
+
### Fixed
|
|
79
|
+
- `stats`의 프로젝트별 세션 카운트 오류와 막대 정렬
|
|
80
|
+
|
|
81
|
+
## [4.1.0] - 2026-03-17 (Phase D)
|
|
82
|
+
|
|
83
|
+
### Added
|
|
84
|
+
- **Plugin**: `.claude-plugin/` directory for Claude Code marketplace
|
|
85
|
+
- **Install**: 3 installation methods (pip / plugin / manual)
|
|
86
|
+
- **GitHub**: Topics, badges, description optimization
|
|
87
|
+
|
|
88
|
+
### Changed
|
|
89
|
+
- Version sync across pyproject.toml, __init__.py, cli.py, plugin.json
|
|
90
|
+
|
|
91
|
+
## [4.0.0] - 2026-03-17 (Phase C)
|
|
92
|
+
|
|
93
|
+
### Added
|
|
94
|
+
- **Team Security**: Path masking (glob patterns), content filtering (redact/skip), session opt-out
|
|
95
|
+
- **Team Access**: member/lead/admin 3-tier role-based access control
|
|
96
|
+
- **Team Repo**: Git central repo with `init --team`, `.team-config.json`
|
|
97
|
+
- **Team CLI**: `team stats`, `team weekly`, `team init`, `team add-member`
|
|
98
|
+
- **Team Notion**: Author column auto-set for shared Notion DB
|
|
99
|
+
- **CLI**: `delete --last` / `delete --session` for session removal
|
|
100
|
+
|
|
101
|
+
## [3.0.0] - 2026-03-17 (Phase B)
|
|
102
|
+
|
|
103
|
+
### Added
|
|
104
|
+
- **Security**: Audit log system (`.audit.jsonl`) — every Hook execution recorded
|
|
105
|
+
- **Security**: SHA-256 checksum verification (`claude-diary audit --verify`)
|
|
106
|
+
- **Security**: SECURITY.md with transparency documentation
|
|
107
|
+
- **Testing**: 40 unit tests (parser, categorizer, secret_scanner, config, audit)
|
|
108
|
+
- **CI/CD**: GitHub Actions (Python 3.8~3.12 × 3 OS)
|
|
109
|
+
- **CI/CD**: PyPI auto-release on tag push
|
|
110
|
+
- **Community**: LICENSE (MIT), CONTRIBUTING.md, Issue/PR templates
|
|
111
|
+
- **Community**: CHANGELOG.md
|
|
112
|
+
|
|
113
|
+
### Changed
|
|
114
|
+
- Audit log integrated into core pipeline
|
|
115
|
+
|
|
116
|
+
## [2.0.0] - 2026-03-17 (Phase A)
|
|
117
|
+
|
|
118
|
+
### Added
|
|
119
|
+
- **Core**: Modular pip package structure (`src/claude_diary/`)
|
|
120
|
+
- **Core**: Auto-categorization (7 categories, KO/EN keywords)
|
|
121
|
+
- **Core**: Git integration (branch, commits, diff stats)
|
|
122
|
+
- **Core**: Secret scanner (11+ patterns auto-masked)
|
|
123
|
+
- **Core**: Search index (`.diary_index.json`) for fast CLI queries
|
|
124
|
+
- **CLI**: 11 subcommands (search, filter, trace, stats, weekly, config, init, migrate, reindex, audit, dashboard)
|
|
125
|
+
- **Exporters**: Plugin architecture with 5 official exporters (Notion, Slack, Discord, Obsidian, GitHub)
|
|
126
|
+
- **Dashboard**: HTML dashboard with Chart.js (heatmap, charts, dark theme)
|
|
127
|
+
- **Config**: XDG standard paths, environment variable fallback
|
|
128
|
+
|
|
129
|
+
### Changed
|
|
130
|
+
- Refactored from single script to modular package
|
|
131
|
+
- Config priority: `config.json > env vars > defaults`
|
|
132
|
+
|
|
133
|
+
## [1.0.0] - 2026-03-17
|
|
134
|
+
|
|
135
|
+
### Added
|
|
136
|
+
- Initial release
|
|
137
|
+
- Stop Hook auto-diary (transcript parsing)
|
|
138
|
+
- Weekly summary generator
|
|
139
|
+
- Korean/English bilingual support
|
|
140
|
+
- Windows/macOS/Linux cross-platform
|
|
141
|
+
- `install.sh` auto-installer
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 solzip
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|