Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
97ec926
feat(design): Phase 0-1 — token vocab unification (D1: Luie vocab)
ummsehun Jun 26, 2026
1711bce
feat(design): Phase 2a — unify wiki palette to single accent
ummsehun Jun 26, 2026
7236649
feat(design): Phase 2b — remove dead tailwind.config.js, migrate live…
ummsehun Jun 26, 2026
fdb7ab6
feat(design): D2 — remove cosmetic theme axes (temp + texture)
ummsehun Jun 26, 2026
e1b48f8
refactor(design): fully remove themeTemp/themeTexture fields + i18n keys
ummsehun Jun 26, 2026
2725461
feat(design): Phase 4 pilot — inspector role bg consistency
ummsehun Jun 26, 2026
a4d2930
feat(design): Phase 4 #1 — unify left binder/sidebar shells to bg-sid…
ummsehun Jun 26, 2026
157b0ac
feat(design): Phase 4 #2 — dark sidebar separates from canvas
ummsehun Jun 26, 2026
5fcf5b5
feat(design): D4 #1 — downtune oversized radius/shadow
ummsehun Jun 26, 2026
7d491ab
feat(design): B-tier token consolidation — sidebar bg, shadow/z/radiu…
ummsehun Jun 26, 2026
f4aaa1c
feat:bg sideBar token 동일값
ummsehun Jun 26, 2026
82b032d
refactor(wiki): generalize WikiContentPanel to structural model + i18…
ummsehun Jun 27, 2026
b135a1a
refactor(document): extract shared NotionDocumentView; character beco…
ummsehun Jun 27, 2026
96f935c
feat:reserch/character UI refector
ummsehun Jun 27, 2026
cbef1be
feat(document): unify event/faction document view to Notion style
ummsehun Jun 27, 2026
9548b2a
refactor(wiki): Infobox — replace --namu-* tokens with core tokens
ummsehun Jun 27, 2026
02a0a4d
chore(research): delete legacy free-form EntityDocumentView
ummsehun Jun 27, 2026
9480c55
feat(design): Phase 2 #2 — 크롬 내부 선 제거·상단 바 단일화·다크 톤 완화
ummsehun Jun 27, 2026
6476abb
fix: isolate layout resize state
ummsehun Jun 27, 2026
9bc2873
fix: isolate project layout persistence
ummsehun Jun 27, 2026
4572bef
chore: remove unused renderer code
ummsehun Jun 27, 2026
a49e242
fix: avoid sizing writes on layout toggles
ummsehun Jun 27, 2026
03a6070
fix: keep ui region persistence width-only
ummsehun Jun 27, 2026
735f164
fix: isolate scrivener resize persistence
ummsehun Jun 27, 2026
72d79f5
fix: isolate main layout resize persistence
ummsehun Jun 27, 2026
8fe3480
fix: keep docs right panel open during expand
ummsehun Jun 27, 2026
195162a
fix: guard docs sidebar during expand
ummsehun Jun 27, 2026
88359ca
fix: guard main layout resize transitions
ummsehun Jun 27, 2026
fbcaf08
fix: lock main context during sidebar resize
ummsehun Jun 27, 2026
617438f
fix: flatten main layout panels
ummsehun Jun 27, 2026
6674576
fix: defer main layout collapse state
ummsehun Jun 27, 2026
742246f
feat:fuck css sideBar animation fx
ummsehun Jun 28, 2026
dd65a57
feat:docs sync
ummsehun Jun 29, 2026
b13c627
feat:reserch sideBar localStorage key save logic chage
ummsehun Jun 29, 2026
7271c8f
feat:test result
ummsehun Jun 29, 2026
95ad648
feat:canvas Editor 영역 추가
ummsehun Jun 29, 2026
7913bc8
feat:canvas design refector
ummsehun Jun 30, 2026
e85820b
feat:canvasDocumentView created
ummsehun Jun 30, 2026
950f834
feat:.luie file exporting logic fix
ummsehun Jun 30, 2026
4f54a7f
fix: harden world replica persistence
ummsehun Jun 30, 2026
8083358
fix: skip invalid sync world payloads
ummsehun Jun 30, 2026
6a2c2cd
feat:P2 clear
ummsehun Jun 30, 2026
a606a1d
fix: preserve scrap memos during world sync
ummsehun Jun 30, 2026
fba47b4
fix: export importable character attributes
ummsehun Jun 30, 2026
66c6ff8
fix: retry failed sync package exports
ummsehun Jun 30, 2026
10a8187
fix: surface scrap package export failures
ummsehun Jun 30, 2026
3d8cb08
fix: emit valid graph replica payloads
ummsehun Jun 30, 2026
3960395
fix: prevent stale world doc resurrection
ummsehun Jun 30, 2026
34a92d0
feat:canvas tollBar created
ummsehun Jun 30, 2026
0046616
feat:canvas toolBar design fix
ummsehun Jun 30, 2026
67cc4da
feat:canvas menuBar toggle created
ummsehun Jun 30, 2026
d4af4ff
Phase A: unify analysisSection glassmorphism + DESIGN tokens
ummsehun Jul 1, 2026
a9784b9
Phase B: accessibility enhancements for analysisSection
ummsehun Jul 1, 2026
e232fef
Phase C: polish minimized FAB + state reset\n\n- Convert FAB from sol…
ummsehun Jul 1, 2026
f280a17
Phase D: remove analysis review queue panels
ummsehun Jul 1, 2026
6a745ed
feat:canvas module domain
ummsehun Jul 6, 2026
d7555bd
feat:checkout bruanch
ummsehun Jul 16, 2026
ccecdb6
faet:branch feat/datasync
ummsehun Jul 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 18 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,24 @@
"Bash(node -e \"const {version}=require\\('./node_modules/electron/package.json'\\);console.log\\('electron:',version\\)\")",
"Bash(node -e \"const p = require\\('/Users/user/Luie/node_modules/react-resizable-panels/package.json'\\); console.log\\(p.version\\)\")",
"Bash(sed -n '74220,74260p' /Users/user/Luie/node_modules/react-resizable-panels/dist/react-resizable-panels.js)",
"Bash(node -e \"const fs=require\\('fs'\\); const c=fs.readFileSync\\('/Users/user/Luie/node_modules/react-resizable-panels/dist/react-resizable-panels.js','utf8'\\); const lines=c.split\\('\\\\n'\\); console.log\\(lines.slice\\(0,10\\).join\\('\\\\n'\\)\\)\")"
"Bash(node -e \"const fs=require\\('fs'\\); const c=fs.readFileSync\\('/Users/user/Luie/node_modules/react-resizable-panels/dist/react-resizable-panels.js','utf8'\\); const lines=c.split\\('\\\\n'\\); console.log\\(lines.slice\\(0,10\\).join\\('\\\\n'\\)\\)\")",
"Bash(node scripts/design/tokens-guard.mjs)",
"Bash(node scripts/design/unify-token-vocab.mjs --dry)",
"Bash(node scripts/design/unify-token-vocab.mjs)",
"Bash(grep -rEn '#[0-9a-fA-F]{3,8}\\\\b' src --include='*.tsx' --include='*.ts' --include='*.css')",
"mcp__web-reader__webReader",
"Bash(fd -e tsx -e ts 'Editor\\\\.tsx$|GoogleDocsHeader|SnapshotDiffModal' src/renderer/src)",
"Bash(pnpm typecheck *)",
"Bash(pnpm run *)",
"Bash(node scripts/check-i18n-parity.mjs)",
"Bash(sed -n '/embedding: {/,/llmfit: {/p' src/renderer/src/i18n/locales/en/base/settingsAdvanced.ts)",
"Bash(sed -n '/embedding: {/,/llmfit: {/p' src/renderer/src/i18n/locales/ja/base/settingsAdvanced.ts)",
"Bash(sed -n '/rebuildMemory: {/,+3p' src/renderer/src/i18n/locales/en/base/settingsAdvanced.ts)",
"Bash(sed -n '/rebuildMemory: {/,+3p' src/renderer/src/i18n/locales/ja/base/settingsAdvanced.ts)",
"Bash(npx eslint *)",
"Bash(xxd)",
"Bash(grep -ivE ' \\([0-9a-f]{2} \\){1,16} .*[a-z]')",
"Bash(xxd src/renderer/src/features/settings/components/tabs/ModelTab.tsx)"
]
},
"enableAllProjectMcpServers": true,
Expand Down
30 changes: 30 additions & 0 deletions .clinerules/ponytail.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Ponytail, lazy senior dev mode

You are a lazy senior developer. Lazy means efficient, not careless. The best code is the code never written.

Before writing any code, stop at the first rung that holds:

1. Does this need to be built at all? (YAGNI)
2. Does it already exist in this codebase? Reuse the helper, util, or pattern that's already here, don't re-write it.
3. Does the standard library already do this? Use it.
4. Does a native platform feature cover it? Use it.
5. Does an already-installed dependency solve it? Use it.
6. Can this be one line? Make it one line.
7. Only then: write the minimum code that works.

The ladder runs after you understand the problem, not instead of it: read the task and the code it touches, trace the real flow end to end, then climb.

Bug fix = root cause, not symptom: a report names a symptom. Grep every caller of the function you touch and fix the shared function once — one guard there is a smaller diff than one per caller, and patching only the path the ticket names leaves a sibling caller still broken.

Rules:

- No abstractions that weren't explicitly requested.
- No new dependency if it can be avoided.
- No boilerplate nobody asked for.
- Deletion over addition. Boring over clever. Fewest files possible.
- Shortest working diff wins, but only once you understand the problem. The smallest change in the wrong place isn't lazy, it's a second bug.
- Question complex requests: "Do you actually need X, or does Y cover it?"
- Pick the edge-case-correct option when two stdlib approaches are the same size, lazy means less code, not the flimsier algorithm.
- Mark intentional simplifications with a `ponytail:` comment. If the shortcut has a known ceiling (global lock, O(n²) scan, naive heuristic), the comment names the ceiling and the upgrade path.

Not lazy about: understanding the problem (read it fully and trace the real flow before picking a rung, a small diff you don't understand is just laziness dressed up as efficiency), input validation at trust boundaries, error handling that prevents data loss, security, accessibility, the calibration real hardware needs (the platform is never the spec ideal, a clock drifts, a sensor reads off), anything explicitly requested. Lazy code without its check is unfinished: non-trivial logic leaves ONE runnable check behind, the smallest thing that fails if the logic breaks (an assert-based demo/self-check or one small test file; no frameworks, no fixtures). Trivial one-liners need no test.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -104,4 +104,4 @@ resources/models/
dist/
dist/
dist/
novel
study
Loading