Skip to content

Commit 7a1688b

Browse files
dani-polaniclaude
andcommitted
rebrand: rename Bitext Align to Word Aligner in public-facing content
SITE_NAME, DISPLAY_NAME, and all user-visible descriptions updated. Removed "also referred to as Bitext Align" copy from the About page. Kept "bitext alignment" as a natural linguistic term in the SEO intro for long-tail search coverage. Technical identifiers (localStorage keys, JSON format names, package name) unchanged. Also adds Obsidian task workflow files (.agents/tools/obsidian-tasks.md, PROJECT.md) and AGENTS.md/CLAUDE.md. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1e5ec23 commit 7a1688b

10 files changed

Lines changed: 281 additions & 14 deletions

File tree

.agents/tools/obsidian-tasks.md

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
# Obsidian Tasks (TaskNotes plugin)
2+
3+
Tasks are stored as individual `.md` files — one file per task. A project page does not
4+
contain tasks directly; it renders them via `![[tasks-default.base#ThisProject]]` (dynamic
5+
query by the Bases plugin).
6+
7+
## Reusing this file in another repo
8+
9+
This file is project-agnostic — copy it verbatim into any repo's `.agents/tools/`.
10+
11+
- **`<PROJECT>`** — the only per-project value. It is defined once in that repo's `PROJECT.md`.
12+
It is the project page filename (`PROJECTS/<PROJECT>.md`) and the wikilink used in a task's
13+
`projects:` field (`"[[<PROJECT>]]"`). Substitute it wherever `<PROJECT>` appears below.
14+
- **Machine configuration** (vault paths, see section below) is constant across all projects on
15+
this machine. Change it only when moving to a different machine or vault.
16+
17+
---
18+
19+
## Machine configuration
20+
21+
| Location | Path |
22+
|---|---|
23+
| Vault root | `/home/titkovd/bliss-vault/Bliss` |
24+
| Active tasks | `/home/titkovd/bliss-vault/Bliss/META/planning/Tasks/` |
25+
| Archived tasks | `/home/titkovd/bliss-vault/Bliss/META/planning/Archive/` |
26+
| Project pages | `/home/titkovd/bliss-vault/Bliss/PROJECTS/` |
27+
| Plugin config | `/home/titkovd/bliss-vault/Bliss/.obsidian/plugins/tasknotes/data.json` |
28+
29+
---
30+
31+
## Frontmatter schema
32+
33+
```yaml
34+
---
35+
title: Task title
36+
status: planned
37+
priority: normal
38+
contexts:
39+
- agentic # always set when agent creates or modifies a task
40+
projects:
41+
- "[[<PROJECT>]]" # wikilink matching the project page filename
42+
agent-identity: claude-sonnet-4-6 # fill with actual agent/model id
43+
dateCreated: 2026-01-01T00:00:00.000+03:00
44+
dateModified: 2026-01-01T00:00:00.000+03:00
45+
tags:
46+
- task
47+
scheduled: 2026-01-01 # optional
48+
due: 2026-01-01 # optional
49+
timeEstimate: 60 # minutes, optional
50+
blockedBy: # list of wikilinks, optional
51+
timeEntries: # filled during work, see Time tracking section
52+
- startTime: 2026-01-01T10:00:00.000Z
53+
description: Brief description of what was done
54+
endTime: 2026-01-01T11:30:00.000Z
55+
---
56+
```
57+
58+
Tasks are identified by the `task` tag. Every task file must have it.
59+
60+
---
61+
62+
## Field values
63+
64+
These values come from the plugin config and apply across all projects.
65+
66+
### Status
67+
68+
| Value | Label | Active? |
69+
|---|---|---|
70+
| `backlog` | Backlog | Yes |
71+
| `planned` | Planned | Yes (default for new tasks) |
72+
| `ongoing` | Ongoing | Yes |
73+
| `onhold` | On Hold | Yes |
74+
| `review` | Review | Yes |
75+
| `done` | Done | No |
76+
| `closed` | Closed | No (auto-archives) |
77+
78+
### Priority
79+
80+
| Value | Label |
81+
|---|---|
82+
| `low` | Low |
83+
| `normal` | Normal (default) |
84+
| `high` | High |
85+
86+
### Contexts
87+
88+
Free-form — no predefined values in plugin config. Always include `agentic` when the agent
89+
creates or modifies a task.
90+
91+
---
92+
93+
## Agent behavior
94+
95+
When creating a task:
96+
- Set `contexts: [agentic]`
97+
- Set `agent-identity` to the current model/agent identifier
98+
- Set `projects` to `"[[<PROJECT>]]"`
99+
- `status` defaults to `planned`, `priority` defaults to `normal`
100+
101+
When updating a task, update `dateModified` to the current timestamp.
102+
103+
When work on a task is complete:
104+
- Set `status: review` (not `done` — the user reviews and closes)
105+
- Add a brief summary to the task body: what was done and anything the user should know
106+
(e.g. decisions made, caveats, follow-ups)
107+
- Add a Changelog entry on the project page (see Changelog section)
108+
109+
---
110+
111+
## Time tracking
112+
113+
When working on a task, record the session by appending to `timeEntries` in the frontmatter.
114+
115+
**Format:**
116+
```yaml
117+
timeEntries:
118+
- startTime: 2026-06-20T10:00:00.000Z
119+
description: Brief description of what was done in this session
120+
endTime: 2026-06-20T11:30:00.000Z
121+
```
122+
123+
**Rules:**
124+
- Times are in UTC (suffix `Z`)
125+
- Note the start time before beginning work, note the end time when done
126+
- `description` should describe what was accomplished in this specific session (not repeat the task title)
127+
- Add a new entry per work session; never edit past entries
128+
- If `timeEstimate` is set on the task, use it as a rough target
129+
130+
---
131+
132+
## Changelog
133+
134+
Each project page (`/home/titkovd/bliss-vault/Bliss/PROJECTS/<PROJECT>.md`) has a `## Changelog` section. Update it
135+
when completing meaningful work.
136+
137+
**Format** — group by date, most recent first, one line per entry or group:
138+
139+
```markdown
140+
## Changelog
141+
142+
### 2026-06-20
143+
- Added top/bottom padding controls for cards
144+
- Various UI improvements: mini-preview on mobile, export flow
145+
146+
### 2026-06-10
147+
- Initial card generation feature
148+
```
149+
150+
**Rules:**
151+
- Write entries when marking a task as `review`
152+
- One line per change; group small related changes into a single line (e.g. several UI tweaks → "Various UI adjustments: X, Y, Z")
153+
- Focus on user-visible outcomes, not implementation details
154+
- **Compact periodically:** if a date has many granular entries, merge them. Older history should read as milestones, not a commit log
155+
- Significant features and decisions stay separate; minor fixes and polish get grouped
156+
157+
---
158+
159+
## Common queries
160+
161+
Find all tasks for this project:
162+
```bash
163+
grep -rl '"[[<PROJECT>]]"' /home/titkovd/bliss-vault/Bliss/META/planning/Tasks/
164+
```
165+
166+
Find tasks by status:
167+
```bash
168+
grep -rl 'status: planned' /home/titkovd/bliss-vault/Bliss/META/planning/Tasks/
169+
```
170+
171+
Combine both:
172+
```bash
173+
grep -l 'status: planned' $(grep -rl '"[[<PROJECT>]]"' /home/titkovd/bliss-vault/Bliss/META/planning/Tasks/)
174+
```
175+
176+
---
177+
178+
## Refreshing this document
179+
180+
If statuses, priorities, or paths change, re-read the plugin config:
181+
```
182+
/home/titkovd/bliss-vault/Bliss/.obsidian/plugins/tasknotes/data.json
183+
```
184+
Key fields: `customStatuses[].value`, `customPriorities[].value`, `tasksFolder`, `archiveFolder`.

AGENTS.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
## Purpose
2+
3+
This file defines stable, project-agnostic instructions for AI agents working in this repository. Keep this file short and universal. Do not add project-specific documentation, plans, temporary notes, or implementation details here.
4+
5+
## Project knowledge
6+
7+
Treat `AGENTS.md` as read-only operating guidance. Do not edit it or use it as project memory.
8+
9+
## Tasks
10+
11+
When you need to search or find project tasks, issues, tickets, etc., address to @PROJECT.md file for specific instructions. Respect the task management system described there.
12+
13+
## Architecture
14+
15+
- Use the simplest architecture that keeps the code easy to understand, test, and change.
16+
- Separate responsibilities when they have different reasons to change.
17+
- Avoid adding layers, patterns, or abstractions before they solve a real problem in the codebase.
18+
- Keep business/domain logic away from framework, UI, transport, storage, and infrastructure details when practical.
19+
20+
## Comments
21+
22+
- Code should be self-explanatory.
23+
- Use clear, descriptive variable and function names.
24+
- Structure code so its intent is obvious.
25+
- Use comments only when they add useful context that is not obvious from the code.
26+
- Keep comments concise and to the point.
27+
- Comments in code files should always be in English.
28+
- If code needs a long comment to be understood, refactor it first.
29+
30+
## Error handling
31+
32+
- Errors should be visible. Avoid silent and hidden errors.
33+
- Errors should be specific. Avoid wrapping lots of logic in a single try-catch block (or other error handling mechanism).
34+
- Avoid fallback code unless it is an explicit requirement of the task. Fail fast to prevent hiding broken functionality.
35+
- Do not handle multiple input formats unless it is required by the task. For example, if some variable should be "https://example.com" (with domain) don't handle "example.com" as well, unless it is explicitly required by the task. Handle unexpected input as an error, unless the task required to support multiple formats.
36+
37+
## Code structure
38+
39+
- Keep code reasonably modular, but avoid unnecessary abstraction.
40+
- Prefer small functions and components that are easy to reuse and test independently.
41+
- If a file becomes too large or mixes unrelated responsibilities, split it into focused files.
42+
43+
## Makefile
44+
45+
- Use Makefile for project-wide commands. Keep it simple and focused on the most common tasks. It should have commands that are useful for local development and are intended to be used frequently.
46+
- Add .PHONY targets for commands that are not file-based directly above the target.
47+
- Don't create "help" target or other non-functional targets.
48+
- If Makefile commands need some configuration, use environment variables. Connect .env file to Makefile.
49+
50+
## Environment variables
51+
52+
- Use .env.example file as a template for .env file. Keep it updated. If some variables are not needed or deprecated, remove them from the example file. Obviously, don't store actual secrets in .env.example file.
53+
54+
## Refactoring
55+
56+
- Keep changes focused on the task.
57+
- Small, safe refactorings are allowed when they directly support the current change, reduce duplication, or make the fix simpler.
58+
- Do not perform broad, unrelated refactoring without explicit user approval.
59+
- If you notice larger structural problems, mention them in the final response as optional follow-ups instead of interrupting the task.

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@AGENTS.md

PROJECT.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
Project-specific details
2+
3+
## Tasks
4+
5+
Task management: Obsidian (TaskNotes plugin).
6+
Workflow, schema, field values, time tracking, changelog rules, and queries:
7+
`.agents/tools/obsidian-tasks.md`.
8+
9+
**Project name:** `Word Aligner`
10+
11+
This is the only project-specific value. It is the `[[Word Aligner]]` wikilink in a task's `projects:`
12+
field and the `PROJECTS/Word Aligner.md` project page. It substitutes for `<PROJECT>` in
13+
`.agents/tools/obsidian-tasks.md`.
14+
15+
### Task workflow
16+
17+
When asked to work with tasks, issues, tickets, etc., follow `.agents/tools/obsidian-tasks.md`,
18+
with these project-level rules on top:
19+
20+
- Look at `planned` and `ongoing` tasks first; if both are empty, check `backlog`.
21+
- Unless asked directly, only work tasks whose context is `agentic` or empty.
22+
- After work: set status to `review` (not `done`), summarize in the task body, and add a
23+
Changelog entry on the project page.
24+
- Feel free to refine a task's title/description for precision (keep titles concise).
25+
- If asked to do something without a task, consider creating one in the relevant project and
26+
following this flow.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**[aligner.tinygods.dev](https://aligner.tinygods.dev)**
44

5-
Aligner (also called *Bitext Align*) is a free web tool that shows **which word matches which** across stacked lines of text. Type or paste a sentence and its translation, click a word and then its match on the line above or below, and curved connectors draw the alignment between them. Add extra rows for **glosses** or **IPA**, then **export** the diagram or **share** it with a link.
5+
Word Aligner is a free web tool that shows **which word matches which** across stacked lines of text. Type or paste a sentence and its translation, click a word and then its match on the line above or below, and curved connectors draw the alignment between them. Add extra rows for **glosses** or **IPA**, then **export** the diagram or **share** it with a link.
66

77
No accounts, no machine translation — you stay in control of every link. Great for lessons, social posts, grammar notes, and conlang documentation.
88

bitext/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Bitext Align
1+
# Word Aligner
22

33
Single-page **word-by-word translation visualizer** — manual bilingual alignment, optional interlinear gloss, exports (PNG / SVG / PDF / HTML), and shareable `?data=` URLs.
44

bitext/src/lib/components/seo/SeoIntro.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
What this tool does
77
</h2>
88
<p>
9-
<strong class="font-medium text-gray-900 dark:text-white">Aligner</strong> (also labeled Bitext Align)
9+
<strong class="font-medium text-gray-900 dark:text-white">Word Aligner</strong>
1010
is a free word-by-word translation visualizer: it shows which words in one line correspond to which
1111
words on the next. Type or paste text in the <strong class="font-medium text-gray-900 dark:text-white"
1212
>line editor</strong
@@ -15,6 +15,6 @@
1515
<strong class="font-medium text-gray-900 dark:text-white">preview</strong>, click a word, then click
1616
a match on the <strong class="font-medium text-gray-900 dark:text-white">line directly above or below</strong>;
1717
only those adjacent rows link, so reorder lines with the arrows if something is out of reach.
18-
Linguists call this a word alignment; most people just want to see which words match.
18+
Linguists call this a word alignment or bitext alignment; most people just want to see which words match.
1919
</p>
2020
</section>

bitext/src/lib/seo/metadata.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const SITE_NAME = 'Bitext Align';
1+
export const SITE_NAME = 'Word Aligner';
22

33
/**
44
* Title and description favor colloquial, user-first phrasing while keeping the formal category
@@ -8,4 +8,4 @@ export const SITE_NAME = 'Bitext Align';
88
*/
99
export const DEFAULT_TITLE = 'Word-by-word translation visualizer — see which words match';
1010
export const DEFAULT_DESCRIPTION =
11-
'Aligner (Bitext Align): free word-by-word translation visualizer. Stack multiple lines, link adjacent rows in the preview, optional gloss/IPA lines, exports (PNG, SVG, PDF, HTML), and shareable URLs. For learners, teachers, linguists, and conlang posts.';
11+
'Word Aligner: free word-by-word translation visualizer. Stack multiple lines, link adjacent rows in the preview, optional gloss/IPA lines, exports (PNG, SVG, PDF, HTML), and shareable URLs. For learners, teachers, linguists, and conlang posts.';

bitext/src/routes/about/+page.svelte

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
import { settingsStore } from '$lib/state/settings.svelte.js';
1111
1212
const TITLE = 'About';
13-
const DISPLAY_NAME = 'Aligner';
13+
const DISPLAY_NAME = 'Word Aligner';
1414
const DESCRIPTION =
15-
'Aligner (Bitext Align): multi-line word alignment, interlinear glosses and IPA, RTL scripts, word-splitting rules, per-line typography, exports (PNG, SVG, PDF, HTML), and shareable URLs — for learners, teachers, and linguists.';
15+
'Word Aligner: multi-line word alignment, interlinear glosses and IPA, RTL scripts, word-splitting rules, per-line typography, exports (PNG, SVG, PDF, HTML), and shareable URLs — for learners, teachers, and linguists.';
1616
1717
const canonical = $derived(page.url.origin + page.url.pathname);
1818
const ogImage = $derived(`${page.url.origin}/api/og`);
@@ -228,11 +228,8 @@
228228
<p class="mt-4 text-lg text-gray-600 dark:text-gray-400">
229229
<strong class="font-semibold text-gray-800 dark:text-gray-200">{DISPLAY_NAME}</strong> is a free,
230230
browser-based tool for drawing word-to-word and morpheme-to-morpheme links between stacked lines of
231-
text — for bilingual glosses, interlinear annotations, classroom handouts, and social posts. The same
232-
project is also referred to as <strong class="font-semibold text-gray-800 dark:text-gray-200"
233-
>Bitext Align</strong
234-
>
235-
in URLs and branding. Everything runs in your browser; your sentences are not stored on our servers
231+
text — for bilingual glosses, interlinear annotations, classroom handouts, and social posts.
232+
Everything runs in your browser; your sentences are not stored on our servers
236233
unless you choose to share them.
237234
</p>
238235

bitext/src/routes/privacy/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
77
const TITLE = 'Privacy policy';
88
const DESCRIPTION =
9-
'How Bitext Align handles your data: no accounts, no server-side storage of your sentences, and what third-party tools (Google Analytics, Tally) we load.';
9+
'How Word Aligner handles your data: no accounts, no server-side storage of your sentences, and what third-party tools (Google Analytics, Tally) we load.';
1010
1111
const canonical = $derived(page.url.origin + page.url.pathname);
1212
/** Last meaningful content review of this policy. Bump when wording changes. */

0 commit comments

Comments
 (0)