Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions README.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<p align="center">
<img src="img/logo.png" alt="ConversationsWithGod icon" width="112">
</p>

<h1 align="center">ConversationsWithGod</h1>
<p align="center">Talk with yourself. Make room for an inner reply.</p>
<p align="center"><a href="README.md">中文</a> · <b>English</b></p>
<p align="center"><a href="https://studentiz.github.io/ConversationsWithGod/">Begin a conversation →</a></p>

ConversationsWithGod is a quiet space for self-dialogue. On the right, write a question, a feeling or a thought. On the left, take another perspective and answer with your own inner wisdom.

You write both sides. “God” can mean the divine, your higher self, or simply a clearer, kinder voice within. Give that voice a little room; an answer does not have to arrive immediately.

<p align="center">
<img src="img/en/conversation.png" alt="English interface with warm grey questions and sage green replies on paper" width="390">
</p>

## Getting started

Open the [web app](https://studentiz.github.io/ConversationsWithGod/) and write your first message. The two voices alternate after each send.

- **Enter** sends; **Shift + Enter** adds a line. On a phone, tap the send button.
- The menu adjusts text size, switches light and dark appearance, exports or clears your conversation.
- You have five seconds to undo a deletion or a cleared conversation.
- The interface follows your browser language, in Chinese or English.

The first visit loads the page; afterward, it can reopen offline. You can also download [index.html](index.html) and open it directly in a browser.

## Stay with the moment

Paper, warm grey questions and sage green replies place the visual focus on the left. Text appears in full, with a gentle upward movement when you send. A translucent scroll indicator appears while scrolling and slowly fades afterward. Multiline drafts have no visible scrollbar.

Older messages gradually fade and blur, like memories receding into the background. Text and timestamps age together; the originals remain saved and exportable. Fading is a display effect, not encryption or deletion.

Long conversations render only the area near the screen while keeping the full history continuously accessible. The interface respects the system’s reduced-motion preference.

## Save or continue a conversation

“Save a copy…” starts with readable text. Other options appear when you choose a different purpose.

<p align="center">
<img src="img/en/export.png" alt="English save dialog, defaulting to reading and Save text" width="360">
</p>

| Purpose | Files |
| --- | --- |
| Reading | Plain text |
| Backup | Complete JSON with original text, roles and timestamps |
| Continuing with AI | Portable messages history; OpenAI / DeepSeek / Qwen Chat Completions, OpenAI Responses, Claude Messages and Gemini API requests |
| Fine-tuning | OpenAI, Hugging Face / TRL and ShareGPT JSONL examples |
| Other formats | ShareGPT JSON, Alpaca JSON, legacy Claude text and Llama 2 INST |

Files are generated on your device. You can use them in a model tool yourself; this app does not call model APIs. See the [export guide](docs/EXPORTS.md) for formats and training examples.

## Your conversation stays with you

Conversations are saved in the current browser. There are no accounts, synchronization, analytics or services that upload your dialogue. Clearing browser data can remove your history; export a backup for anything you want to keep.

## Contributing

Issues, suggestions and contributions are welcome. See the [development guide](docs/DEVELOPMENT.md) and [validation record](docs/VALIDATION.md).

If this small space helps you, feel free to share it with someone who could use it.
137 changes: 37 additions & 100 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,126 +1,63 @@
# ✨ ConversationsWithGod

<p align="center">
<img src="img/logo.png" alt="ConversationsWithGod Logo" width="160">
<img src="img/logo.png" alt="ConversationsWithGod 图标" width="112">
</p>

<p align="center">
<i>"Meaning is not something we find, but something we create." — Alfred Adler</i>
</p>

## 🚀 Getting Started

No installation required!
<h1 align="center">ConversationsWithGod</h1>
<p align="center">和自己说说话,听见内心的回应。</p>
<p align="center"><b>中文</b> · <a href="README.en.md">English</a></p>
<p align="center"><a href="https://studentiz.github.io/ConversationsWithGod/">开始对话 →</a></p>

1. Visit [https://studentiz.github.io/ConversationsWithGod/](https://studentiz.github.io/ConversationsWithGod/)
2. Start your conversation
3. Alternate between you (the seeker/student) and your inner wisdom (God)
ConversationsWithGod 是一个安静的自我对话空间。右侧写下你的困惑、念头和提问;左侧,换一个角度,用自己的内在智慧回应。

Or download the HTML file and open it locally in any browser.

## 🪞 A Mirror for Your Soul

ConversationsWithGod is a simple but profound tool for having meaningful conversations with yourself. Frame your thoughts as a dialogue between a seeker and the divine – or however you choose to imagine your higher self.

Unlike traditional journal apps or AI chatbots, this is a space for genuine self-reflection. You play both parts in the conversation, allowing your own wisdom to emerge through the dialogue.
你扮演对话中的双方。这里的“God”可以是你理解的神、理想中的自己,或心底那个更清醒、更温柔的声音。留一点时间给它,答案不必马上出现。

<p align="center">
<img src="img/screenshot.png" alt="Application Screenshot" width="450">
<img src="img/zh/conversation.png" alt="中文界面:纸色背景,右侧暖灰色提问,左侧鼠尾草绿色回应" width="390">
</p>

## 💭 Why This Exists

> "Know thyself." — Ancient Greek aphorism
## 开始使用

We all need space to process our thoughts, ask deep questions, and listen to our inner wisdom. This tool provides a structured way to externalize that internal dialogue, making it easier to explore your own beliefs, challenges, and insights.

## ✨ Features

- **🍃 Pure Simplicity**: Single HTML file, no installation, works offline
- **🔒 Complete Privacy**: All conversations stay on your device
- **👁️ Ephemeral Memory**: Messages naturally fade and blur over time, mimicking real memory
- **🎨 Beautiful Interface**: Clean, paper-like design with light and dark modes
- **💾 Export Options**: Complete backups, readable text, current API request bodies and fine-tuning datasets
- **🌿 Long Conversations**: Continuous history scrolling with only visible messages rendered
- **↩️ Undo**: Undo message deletion or clearing a conversation
- **🤖 LLM Training Ready**: Export in formats compatible with various AI models
- **📱 Fully Responsive**: Works on desktop and mobile devices

## 🔒 Privacy

Conversations are stored in browser IndexedDB, migrating older localStorage records. Nothing is ever sent to a server. There are no analytics, no tracking, and no cookies. Your thoughts remain entirely your own.

### Natural Privacy Protection

<p align="center">
<img src="img/privacy-blur.png" alt="Privacy Through Fading" width="480">
</p>
打开 [网页版](https://studentiz.github.io/ConversationsWithGod/),写下第一句话即可。每次发送后,角色自动交替。

The fading display evokes the way human memory changes. It is a visual effect, not encryption or deletion:
- **Enter** 发送,**Shift + Enter** 换行;手机上也可以点发送按钮。
- 右上角菜单可以调整字号、切换深浅外观、导出或清空对话。
- 删除一条对话或清空后,5 秒内可以撤销。
- 界面跟随浏览器语言显示中文或英文。

- **Time-Based Fading**: Older messages gradually become blurry and fade away
- **Five Stages of Aging**: Messages progress through increasing levels of obscurity
- **Natural Security**: Anyone glancing at your screen sees only your recent thoughts clearly
- **Visual Fading**: The original text and timestamps remain saved and exportable. Both fade together on screen.
首次访问需要加载网页,之后支持离线打开。也可以下载仓库里的 [index.html](index.html),直接用浏览器打开。

This design reflects how memories and conversations naturally fade with time, providing both privacy and encouraging a focus on the present moment.
## 留在当下

## 📝 How To Use
纸色背景、暖灰色提问和绿色回应,让目光自然落在左侧。文字完整显示,发送时气泡轻轻上移。滚动指示条在滚动时出现,停下后慢慢淡出;输入框支持换行,也不会露出突兀的滚动条。

1. **🙋 Start a dialogue**: Type your question or thought as yourself
2. **💫 Respond as wisdom**: The next message automatically switches roles
3. **🔄 Continue the conversation**: Alternate between the two perspectives
4. **⚙️ Adjust settings**: Change font size or toggle dark mode as needed
5. **📤 Export when ready**: Save your conversations for reference or training
较早的对话会逐渐淡化、模糊,像记忆一样退到背景中。文字与时间一起变化;原文仍保留,可以完整导出。淡化是显示效果,并非加密或删除。

## 🧠 Exporting for AI Training
长对话只渲染屏幕附近的内容,完整历史仍可连续浏览。开启系统的“减少动态效果”后,界面会减少动画。

Choose a full backup for safekeeping, a request body to continue a dialogue with a model, or a JSONL dataset for fine-tuning.
## 保存与继续对话

- OpenAI-compatible Chat Completions, OpenAI Responses, Anthropic Messages and Gemini generateContent
- OpenAI supervised fine-tuning JSONL with answer weights, Hugging Face / TRL messages JSONL and ShareGPT JSONL
- Complete JSON backup, portable messages history, plain text
- Legacy Claude text, Llama 2 INST, ShareGPT JSON and Alpaca JSON

Saving starts with readable text. Choose another use to reveal backup, AI continuation or fine-tuning options. All exports are generated locally; the app does not call model APIs. Supply your provider's model ID when preparing an API request. See [the export guide](docs/EXPORTS.md) for continuation, training context, loss masking and current API schemas.

## 🕊️ The Philosophy Behind It

> "The kingdom of God is within you." — Luke 17:21

This tool is built on the belief that we all have access to profound wisdom within ourselves. By creating space for dialogue, we can access parts of our consciousness that often go unheard in the noise of everyday thinking.

Whether you see this higher wisdom as God, your higher self, universal consciousness, or simply your own deeper insight doesn't matter. What matters is creating the space to listen.

## ⭐ Share the Light

> "A candle loses nothing by lighting another candle." — Father James Keller

In a world filled with noise and distraction, tools for inner reflection become precious sanctuaries. If ConversationsWithGod has helped bring clarity, peace, or insight to your life, consider helping others find it too:

- **⭐ Star this repository** to show your appreciation and help others discover it
- **🔄 Fork it** if you'd like to build upon it or customize it for your needs
- **🌱 Share it** with friends who might be seeking space for deeper reflection
- **💬 Tell your story** in the repository discussions about how it has helped you

Every star, fork, and share helps this little light reach more seekers in a digital landscape that often optimizes for engagement over reflection. Together, we can create more spaces for meaningful inner dialogue.
“导出对话”默认保存便于阅读的文本。选择其他用途时,才会出现相应的选项。

<p align="center">
<a href="https://github.com/studentiz/ConversationsWithGod/" title="Star ConversationsWithGod on GitHub">
<img src="https://img.shields.io/github/stars/studentiz/ConversationsWithGod?style=social" alt="Star on GitHub">
</a>
<img src="img/zh/export.png" alt="中文导出窗口,默认选择阅读并保存文本" width="360">
</p>

## 👥 Contributing
| 用途 | 可选文件 |
| --- | --- |
| 阅读 | 纯文本 |
| 备份 | 包含原始内容、角色和时间的完整 JSON |
| 交给 AI 继续对话 | 通用 messages 历史;OpenAI / DeepSeek / Qwen Chat Completions、OpenAI Responses、Claude Messages、Gemini API 请求 |
| 微调模型 | OpenAI、Hugging Face / TRL、ShareGPT 的 JSONL 训练样本 |
| 其他格式 | ShareGPT JSON、Alpaca JSON、旧版 Claude 文本与 Llama 2 INST |

Contributions are welcome! Feel free to open issues or submit pull requests on the [GitHub repository](https://github.com/studentiz/ConversationsWithGod). See [development instructions](docs/DEVELOPMENT.md) and [validation results](docs/VALIDATION.md) for building and checking the web version.
文件在设备上生成。你可以自行将它交给模型工具;本应用不调用模型 API。具体格式与训练样本的说明见 [导出指南](docs/EXPORTS.md)。

---
## 对话留在你的设备上

<p align="center">
<i>"It is not what happens to us that determines our lives, but how we interpret and respond to it." — Alfred Adler</i>
</p>
对话保存在当前浏览器中,没有账号、同步、分析追踪或上传对话的服务。清理浏览器数据可能会移除历史;需要长期留存的内容,可以导出备份。

<p align="center">
Made with ❤️ for seekers everywhere
</p>
## 参与项目

欢迎提出问题、改进建议或贡献代码。构建与验证方式见 [开发说明](docs/DEVELOPMENT.md),已有检查见 [验证记录](docs/VALIDATION.md)。

如果这个小空间对你有所帮助,也欢迎把它分享给需要的人。
8 changes: 6 additions & 2 deletions docs/DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ npm run test:motion
npm run test:browser
```

`web/index.template.html` contains the original paper UI and interaction code. `web/storage.js`, `web/transcript.js` and `web/exports.js` are inlined by the build into the standalone root `index.html`. GitHub Pages serves that generated file from `main` as before.
`web/index.template.html` contains the original paper UI and interaction code. `web/storage.js`, `web/transcript.js`, `web/i18n.js` and `web/exports.js` are inlined by the build into the standalone root `index.html`. GitHub Pages serves that generated file from `main` as before.

The public build is a single standalone HTML file plus optional PWA assets. `npm run build:icons` regenerates the web icons and README logo from `icons/mark.svg`, using the same borderless dialogue-bubble shapes and paper/gray/green palette as the interface.

Expand All @@ -23,6 +23,10 @@ Pages migrates the previous `chat_messages` localStorage array into IndexedDB at

The transcript uses variable-height virtual rows with overscan, measured height caching, binary-search lookup and explicit scroll anchoring. Native browser anchoring is disabled to avoid double adjustment when spacers change. Every message remains in the history and is reachable by continuous scrolling; exporting reads the full history, not the rendered DOM.

Only a newly sent short message gets a character-opacity reveal. Grapheme segmentation preserves composed emoji and text, spans are capped at 160. A single character fades in over 600 ms; phrases have at least a 700 ms span between the first and last character starts, with a 420 ms fade for each. Longer passages use approximately 65 ms between starts, capped at a six-second stagger, and collapse back to one text node within 6.52 seconds. Long messages render immediately. Menus and dialogs use short opacity / transform transitions. The reduced-motion preference removes reveals and transitions; hidden documents stop maintenance timers and finish active text reveals. Idle conversations have no continuous decorative animation. Aging is applied to a shared content wrapper so the body and timestamp fade and blur together, while deletion controls stay clear. There is no added fading toggle or backup import item.
Text is inserted in full as one text node. Sending applies a 240 ms upward transform to the new bubble and to visible earlier bubbles displaced by it, with at most 24 moving rows. Scrolling cancels message movement; hidden views and reduced-motion changes finish it immediately. Historical rows do not replay entry animation.

The conversation keeps native wheel, touch and keyboard scrolling with a custom translucent overlay handle. It is hidden when there is no overflow, appears immediately during scrolling or interaction near the right edge, waits 800 ms after activity, then fades over 600 ms. Dragging, track clicks, Home/End and arrow/page keys are supported. ResizeObserver and one scheduled animation frame update its geometry; there is no polling or permanent decorative animation. Native scrollbar visibility settings cannot reveal a second track. The composer auto-grows to a viewport-limited height and allows caret scrolling without showing a scrollbar; width changes remeasure wrapped drafts.

Aging is applied to a shared content wrapper so the body and timestamp fade and blur together, while deletion controls stay clear. Language follows the browser; Chinese and English documentation screenshots are captured from isolated example histories with `npm run screenshots`.

These choices follow [Apple's motion guidance](https://developer.apple.com/design/human-interface-guidelines/motion): purposeful, brief feedback, input available during animation, and accessibility preferences. Smoothness and power are tested separately from correctness; there is no measured battery-life claim.
Loading
Loading