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
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"name": "superloopy",
"source": "./",
"description": "Strict evidence loop harness: repo-local loop state, success criteria, append-only ledgers, evidence-gated completion, plus skills (loop, research, frontend, clone) and a read-only/worker crew. Works on Claude Code and Codex from one repo.",
"version": "0.12.1",
"version": "0.12.2",
"license": "MIT",
"keywords": [
"claude-code",
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "superloopy",
"version": "0.12.1",
"version": "0.12.2",
"description": "Lightweight loop harness with strict evidence gates — Claude Code edition.",
"homepage": "https://github.com/beefiker/superloopy#readme",
"repository": "https://github.com/beefiker/superloopy",
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "superloopy",
"version": "0.12.1",
"version": "0.12.2",
"description": "Lightweight loop harness with strict evidence gates.",
"homepage": "https://github.com/beefiker/superloopy#readme",
"repository": "https://github.com/beefiker/superloopy",
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "superloopy",
"version": "0.12.1",
"version": "0.12.2",
"description": "A lightweight loop harness for Codex and Claude Code with strict evidence gates.",
"type": "module",
"bin": {
Expand Down
2 changes: 1 addition & 1 deletion skills/superloopy-frontend/references/ux.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ Use consequence-scaled error handling. Preserve input, identify the specific cor

## Internationalization and bidirectionality

Internationalization begins during discovery. When the brief, audience, or distribution intent implies more than one locale (public release, open-source distribution, app-store or marketplace delivery), every user-visible string ships through the platform's translation mechanism (`tr()`/`qsTr()`, resource bundles, message catalogs) from the first artifact; hardcoded single-locale copy in a distribution-targeted surface is a defect, not a follow-up. When copy ships in a language different from the brief's language, record the locale decision and its reason instead of defaulting silently. Avoid display-string concatenation; use locale-aware formatting, sorting, searching, pluralization, and input. Carry language and direction metadata, and define whether a product language override follows the system, persists locally, syncs, or is unavailable.
Internationalization begins during discovery. When the brief, audience, or distribution intent implies more than one locale, every user-visible string the work introduces or changes ships through the platform's translation mechanism (resource bundles, message catalogs) from the first artifact; hardcoded single-locale copy in new distribution-targeted work is a defect, not a follow-up. Public release, open-source distribution, or store delivery is a signal to resolve locale intent during discovery, not proof of it: a deliberately single-locale surface stays single-locale, and a narrow change on one does not by itself demand retrofitting externalization. When copy ships in a language different from the brief's language, record the locale decision and its reason instead of defaulting silently. Avoid display-string concatenation; use locale-aware formatting, sorting, searching, pluralization, and input. Carry language and direction metadata, and define whether a product language override follows the system, persists locally, syncs, or is unavailable.

Test representative long text, unbroken content, bidirectional content, and taller-script content without assuming one universal expansion percentage. Mirroring is selective: media controls, charts, maps, and user-authored direction may not mirror with surrounding navigation.

Expand Down
5 changes: 3 additions & 2 deletions test/frontend-ux-contract.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -540,8 +540,9 @@ test("i18n contract requires string externalization for distribution-targeted su
const ux = await read(reference("ux"));
const qt = await read(reference("qt"));

assert.match(ux, /more than one locale.*every user-visible string ships through the platform's translation mechanism/is);
assert.match(ux, /hardcoded single-locale copy in a distribution-targeted surface is a defect, not a follow-up/iu);
assert.match(ux, /more than one locale.*every user-visible string the work introduces or changes ships through the platform's translation mechanism/is);
assert.match(ux, /hardcoded single-locale copy in new distribution-targeted work is a defect, not a follow-up/iu);
assert.match(ux, /signal to resolve locale intent during discovery, not proof of it.*deliberately single-locale surface stays single-locale/is);
assert.match(ux, /language different from the brief's language.*record the locale decision/is);
assert.match(qt, /strings pass through `tr\(\)`\/`qsTr\(\)` with a translation setup/iu);
});
Loading