Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
63c53cc
application: improvements (#990)(#993)(#999)(#1002)
mildabre Apr 7, 2023
cae3ff3
wording (#1000) (#1001)
mildabre Apr 7, 2023
cf94a04
latte: added {formContainer}
dg Apr 9, 2023
23f18d7
typo (#1004)
mildabre Apr 11, 2023
6ff39bf
troubleshooting: testing .htaccess / mod_rewrite
dg Apr 14, 2023
9839e9a
10-reasons-why-nette: rewritten
dg Apr 16, 2023
1801866
latte: added "why use"
dg Apr 18, 2023
7ba9bc1
Typo (#1008)
diegosardina Apr 24, 2023
241f76a
Typos. (#1010)
radekdostal Apr 26, 2023
dd3872c
application: improved leftmenu
dg May 14, 2023
57247a0
typo (cs) (#1013)
Dzardys May 17, 2023
81cc3e9
added: AVIF support (#1011)
jhabaj May 22, 2023
707470b
php-generator: better info about PSR
dg May 22, 2023
f319a9e
coding-standard: added image of signature/body separation
dg May 22, 2023
411b13c
latte: improved {do} & {php}
dg May 31, 2023
5629466
improvements
dg Jul 29, 2023
585201c
latte: ??-> is legacy
dg Jul 29, 2023
9028422
latte: removed info about Latte 2.x
dg Jul 29, 2023
bc182ad
{capture} creates Html object
dg Aug 8, 2023
b050d81
latte: template inheritance improved
dg Aug 9, 2023
d6f0710
latte: multiline comments only
dg Aug 9, 2023
e328188
Latte: added enablePhpLinter()
dg Aug 9, 2023
a9a5bee
latte: guide link to fiddle
dg Aug 9, 2023
53489c8
neon vs yaml
dg Aug 11, 2023
976819f
Latte: 3.0.8
dg Aug 27, 2023
c33927a
list of DI services
dg Aug 27, 2023
8c8055d
quickstart: requires PHP 8.1
dg Aug 29, 2023
67eac2f
troubleshooting: improved
dg Aug 29, 2023
c15d277
php-generator 4.0.9
dg Aug 29, 2023
85e9dfe
typo
dg Aug 31, 2023
652fe7d
routing: added callbacks
dg Sep 6, 2023
6624505
added best-practices/microsites
dg Sep 6, 2023
8ab47d2
latte 3.0.9
dg Sep 8, 2023
a68782e
filesystem: link to Finder
dg Sep 12, 2023
aad9b7e
own page for StaticClass
dg Sep 12, 2023
f6907fb
improved smartobject
dg Sep 12, 2023
0e54205
nette/utils 4.0.1
dg Jan 17, 2024
9595f30
nette/utils 4.0.2
dg Sep 19, 2023
b570e15
latte: info about Latte\Runtime\Html
dg Sep 19, 2023
a1ad905
Tracy: added mappings
dg Sep 22, 2023
f2b218f
robot-loader: info about standalone usage
dg Sep 26, 2023
22421a8
typo
dg Sep 27, 2023
78b8fe7
neon: improved syntax description
dg Sep 27, 2023
08e9473
di: neon syntax improvements
dg Sep 27, 2023
881b521
turning cache off
dg Oct 2, 2023
82b2b99
typo [closes #1022]
dg Oct 5, 2023
c59ffce
nette/di v3.1.8 [Closes #1031]
dg Oct 2, 2023
7417e61
nette/schema 1.2.5
dg Oct 4, 2023
761d91b
nette/application v3.1.14
dg Oct 4, 2023
5463a31
improvements
dg Oct 5, 2023
8d52991
nette/forms 3.1.12
dg Oct 10, 2023
71d3c6d
latte 3.0.10
dg Oct 11, 2023
e6fe285
services: improved text
dg Oct 13, 2023
25dcaf5
form validation: improved
dg Oct 15, 2023
825d0ad
forms: used unpkg.com for netteForms
dg Oct 15, 2023
18d427c
ajax: improved
dg Oct 15, 2023
0e60a39
forms: improved in about disabled fields
dg Oct 20, 2023
5a9f2a8
intro to oop
dg Oct 24, 2023
c5aa194
links to oop
dg Oct 25, 2023
05c3f59
fixed link
dg Oct 25, 2023
ec0c95f
Typo (#1034)
pat0s Oct 29, 2023
cc4311b
nette/forms 3.1.14
dg Oct 29, 2023
cf8aec8
nette/utils 4.0.2
dg Oct 29, 2023
b883648
php-generator: improved perex etc
dg Nov 1, 2023
bc6a6c8
robot-loader: improved translation
dg Nov 1, 2023
b165019
php-generator: improved EN translation
dg Nov 1, 2023
ddaee12
latte 3.0.12
dg Nov 9, 2023
f23477f
updated PHP requirements
dg Nov 13, 2023
f697ccd
composer: ignore upper boundary
dg Nov 21, 2023
1b0fedd
forms 3.1.15
dg Nov 11, 2023
2bfe3bd
nette/database v3.2
dg Dec 14, 2023
1a44650
Arrays::associate
dg Nov 25, 2023
a8cba43
typo (#1036)
Jonezzyboy Dec 26, 2023
d6d1051
troubleshooting: fixed info
dg Dec 26, 2023
244c9bf
neon: added missing parameter (#1037)
sallyx Dec 26, 2023
2b246d6
typo
dg Dec 31, 2023
2088e73
nette/utils 4.0.4
dg Jan 17, 2024
c9acd9e
tester: option -l replaced with -o
smuuf Jan 21, 2024
c77ee22
nette/tester 2.5.2
dg Jan 21, 2024
0545df1
nette/http 3.2.4
dg Jan 30, 2024
6ac6bec
nette/application 3.2
dg Feb 8, 2024
666013c
nette/component-model 3.1.0
dg Feb 8, 2024
c051e39
nette/di 3.2
dg Feb 12, 2024
dc492ff
added utils/upgrading
dg Mar 2, 2024
4072d3a
typo
nextMJ Feb 17, 2024
6c5aafe
updated web-project
dg Feb 18, 2024
3120cb7
migrations updated
dg Mar 2, 2024
07c45c8
migration guide for Nette 3.2 [WIP]
dg Feb 10, 2023
937ff6f
oop: improvements
dg Mar 10, 2024
bca4e5b
nette/application 3.2.1
dg Mar 11, 2024
fd47128
floats: note about precision
dg Mar 12, 2024
5781568
typo (#1046)
mildabre Mar 18, 2024
122e2a2
Fixed PhpStorm typo (#1045)
hermajan Mar 18, 2024
2ef17ae
application: better wording [Closes nette/application#323]
dg Mar 19, 2024
540edf1
Grammar corrected in documentation (#1044)
rastographics Mar 19, 2024
7dff1a6
Typo. (#1042)
radekdostal Mar 19, 2024
44f2c06
latte: vscode plugin
dg Apr 3, 2024
f662153
typo
dg Apr 4, 2024
86d61a0
typo
dg Apr 18, 2024
1cdba9a
uses GitHub Actions
dg Apr 4, 2024
2a69d1e
latte: simplified "{..}"
dg Apr 6, 2024
a934cb5
typo
dg Apr 15, 2024
ac26ad5
nette/application 3.2.3
dg Apr 18, 2024
167b39d
nette/application 3.2.3: new directory structure
dg Apr 18, 2024
54b4191
new directory structure throughout documentation
dg Apr 18, 2024
7ab8a53
best practices: attribute Requires
dg Apr 18, 2024
22a79bd
nette/bootstrap 3.2.3
dg Apr 19, 2024
6206ecf
forms: info about hidden field security
dg Apr 22, 2024
2faf51a
typo
dg Apr 25, 2024
ea063d4
tracy: AJAX debugging
dg May 2, 2024
8682c32
tester 2.5.3
dg May 3, 2024
3a8013f
forms: missing information added
dg May 5, 2024
f871fd7
forms: slightly improved HTML attributes
dg May 5, 2024
8f3e0d5
nette/database 3.2.1
dg May 7, 2024
72b3b22
iteratewhile -> grouping
dg May 14, 2024
9e41b6d
latte 3.0.16
dg May 14, 2024
002cba0
latte: adding |group to the grouping
dg May 14, 2024
13cdf66
latte: pictograms
dg May 16, 2024
c7b6e33
http: missing fragment warning
dg May 17, 2024
0d6abf4
latte: added passing-variables
dg May 20, 2024
ebbb385
typo
dg May 24, 2024
a43a7a7
routing: better wording
dg May 28, 2024
cc976df
bootstrap: $appDir -> $rootDir
dg Aug 3, 2024
5076414
nette/forms 3.2.4
dg Aug 5, 2024
7e7becf
latte 3.0.18
dg Aug 6, 2024
134604d
typo (#1052)
buffus Aug 6, 2024
6df7be0
nette/caching 3.3.1
dg Aug 7, 2024
f1f51af
nette/utils 4.0.5
dg Aug 7, 2024
fcbfcb4
nette/database 3.2.4
dg Aug 9, 2024
0cbdb28
typo
dg Sep 4, 2024
e6320f3
php-generator 4.1.6
dg Sep 10, 2024
b8c3494
nette/application 3.2.6
dg Jun 9, 2024
c53fb74
Typos (#1057)
mezotv Oct 4, 2024
dc60bc9
typo [Closes #1050]
dg Oct 4, 2024
829a07b
nette/schema 1.3.2
dg Oct 5, 2024
67af749
typo
dg Oct 23, 2024
ed0f63b
Forms: added missing parameters
dg Oct 23, 2024
e57213d
fixed type hints
dg Oct 23, 2024
30e1f20
[filter] has same signature as [method]
dg Oct 23, 2024
6d6d12d
typo
jvitasek Oct 23, 2024
2def2a2
ajax: Naja initialization info [Closes #1053]
dg Oct 23, 2024
8b67caa
upgrading: added exception class change info (finder) [Closes #1051]
delacry Jul 1, 2024
935c62d
typo [Closes #1049]
diegosardina Jun 9, 2024
b12d8b9
better wording [Closes #1038][Closes #1040][Closes #1026][Closes #10…
mildabre Jan 24, 2024
86beed3
typo [Closes #1024]
mabar Jun 25, 2023
90a4226
components: added info about redirect after signal [Closes #1017]
dg May 30, 2023
5e0b52f
new Bootstrap API
dg Oct 24, 2024
edc46bb
smartobject: info about PHP 8.4
dg Nov 24, 2024
d70bb86
nette/php-generator 4.1.7
dg Nov 28, 2024
015142d
improved info about production/development mode
dg Nov 29, 2024
e585389
typo [Closes #1070]
dg Dec 8, 2024
7774f13
tracy: compatible with 8.4
dg Dec 18, 2024
2a66148
application: improved homepage
dg Dec 18, 2024
2e1a29b
database extensive update
dg Dec 17, 2024
8f7e147
modified links to db
dg Dec 20, 2024
8c0a68c
latte: better expression
dg Nov 6, 2024
11a9ed0
latte: removed some quotes
dg Jan 13, 2025
5cb575d
latte: added example how latte seen template
dg Jan 9, 2025
fe30161
nette/di 3.2.4
dg Jan 10, 2025
3af4854
nette/http 3.3.2
dg Jan 12, 2025
c5a2cf2
nette/tester 2.5.5
dg Jan 12, 2025
20d4749
troubleshooting: warning about document_root
dg Jan 23, 2025
fa85a3a
added directory-structure
dg Jan 23, 2025
2fc6ef4
modules => directory structure
dg Jan 23, 2025
130ed6e
http: improved texts
dg Mar 6, 2025
91f72a5
typo
dg Mar 7, 2025
a27b51b
new VS plugin
dg Apr 6, 2025
13e5e09
nette/utils 4.0.6
dg Mar 30, 2025
0adcc4b
latte: info about constants
dg Apr 3, 2025
e1bcb9a
latte: extensive documentation on how to extent latte
dg Apr 6, 2025
b473b45
removed comments
dg Apr 14, 2025
13f8162
merged paragraphs
dg Apr 14, 2025
2734515
normalized .[xxx]
dg Apr 14, 2025
076e4af
@menu-common: added link to vulnerability-protection
dg Apr 14, 2025
2d3749d
typos
dg Jun 17, 2025
34da53c
JA translation
dg Apr 17, 2025
9425147
improved translation
dg Apr 19, 2025
92ef0ec
added .perex
dg Apr 15, 2025
1eff43a
links normalization
dg Apr 19, 2025
ced3194
typo
dg May 19, 2025
d136d1a
nette/bootstrap 3.2.6
dg May 22, 2025
b0aa76b
application/bootstrap -> bootstrapping
dg May 27, 2025
5fa382f
unification of titles
dg May 27, 2025
3aaa90f
added nette assets
dg May 27, 2025
5e378f4
typo
dg Jun 24, 2025
8a28eeb
latte 3.0.22
dg Jun 24, 2025
160901d
fixed a typo
vrana Jun 30, 2025
28bc0fe
fixed a typo
vrana Jun 30, 2025
fa5d071
typo
vrana Jul 9, 2025
5bef75f
typo
vrana Jul 16, 2025
9f427ef
nette/application 3.2.7
dg Jul 17, 2025
b664304
php-generator: version is 4.x
dg Aug 6, 2025
28a3213
nette/tester 2.5.6
dg Aug 6, 2025
a66fec9
Typo
vrana Aug 8, 2025
74b6d48
typo
vrana Aug 8, 2025
ffdab02
typo
vrana Sep 10, 2025
acc374d
presenter: info about AbortException
dg Sep 16, 2025
40b6c49
ajax: linked best practices
vrana Sep 23, 2025
9e81057
typo
vrana Oct 3, 2025
04e1ad0
php2latte & twig2latte moved to fiddle.nette.org
dg Oct 20, 2025
ad65416
tests: added coverage.html
dg Oct 20, 2025
2c1c2f1
added @meta
dg Oct 22, 2025
22d2aa1
added dibi & texy
dg Oct 3, 2025
4204814
texy: extensive documentation update
dg Oct 21, 2025
70a04b8
removed null as an array offset
dg Oct 31, 2025
f1acb46
typo [Closes #1081]
jtojnar Sep 27, 2025
fe8034b
latte 3.1.0
dg Nov 26, 2025
22de54d
application: improved info about attributes, added #[Deprecated]
dg Nov 29, 2025
37bb5b0
application: improved info about template variables and extensions
dg Nov 29, 2025
b5bc946
nette/utils 4.0.10
dg Dec 1, 2025
6ef7d5d
nette/application 3.2.9
dg Nov 29, 2025
c64a266
latte 3.1.2
dg Dec 23, 2025
243400c
adding missing stuff in nette/http
dg Dec 27, 2025
3632f6c
used first-class callables
dg Jan 4, 2026
10e5a56
added coding standard section about global functions and constants
dg Jan 6, 2026
f3bd73e
Tester 2.6: updated documentation for php.ini loading behavior change
dg Jan 6, 2026
2128e66
added ai.nette.org
dg Jan 8, 2026
a120525
added CLAUDE.md
dg Dec 28, 2025
c2f34ca
forms: setValidationScope side-effect
Jan 16, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
17 changes: 17 additions & 0 deletions .github/workflows/coding-style.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Coding Style

on: [push, pull_request]

jobs:
nette_cc:
name: Nette Code Checker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: shivammathur/setup-php@v2
with:
php-version: 8.3
coverage: none

- run: composer create-project nette/code-checker temp/code-checker ^3 --no-progress
- run: php temp/code-checker/code-checker --no-progress
13 changes: 0 additions & 13 deletions .travis.yml

This file was deleted.

269 changes: 269 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

This is the official documentation repository for the Nette PHP framework ecosystem. It contains technical documentation for 31 packages across 16+ languages, written in Texy markup format and published at nette.org, doc.nette.org, latte.nette.org, tester.nette.org, and tracy.nette.org.

## CRITICAL: Language Version Rules

**⚠️ MOST IMPORTANT: All edits and changes MUST ONLY be made to `/cs/` and `/en/` language versions!**

### Strict Synchronization Requirements

1. **Edit only `/cs/` and `/en/` versions** - Never directly edit other language variants (de, fr, es, ru, etc.)
2. **Perfect line alignment** - `/cs/` and `/en/` must have identical line counts and structure
- Same information must be on the same line number in both versions
- Example: Line 14 in `application/en/presenters.texy` corresponds to line 14 in `application/cs/presenters.texy`
- Both files must have exactly the same number of lines (e.g., both have 510 lines)
3. **Same file sets** - `/cs/` and `/en/` must contain exactly the same `.texy` files
4. **Automatic translation** - Other language variants (de, fr, es, etc.) are translated automatically from `/en/` or `/cs/` using DeepL
5. **Verification** - Use `php verifyLineAlignment.php` to check line synchronization across language versions

### Why This Matters

The translation system relies on line-by-line correspondence between `/cs/` and `/en/`. When these versions are perfectly aligned:
- Automated translation tools can map content accurately
- Changes propagate correctly to all 16+ language variants
- Documentation consistency is maintained across all languages

**Before any edit:**
- Check that both `/cs/` and `/en/` files exist
- Ensure line counts match: `wc -l package/en/file.texy package/cs/file.texy`
- Make parallel changes to maintain synchronization

## Documentation Structure

Documentation is organized by package, language, and article:

```
<package>/
├── en/ # English version (primary language)
├── cs/ # Czech version
├── de/, fr/, ... # Other language variants
├── files/ # Shared images and assets
└── meta.json # Package metadata (version, repo, composer name)
```

### Complete Package Inventory (31 packages, 233 files in /en)

**Nette Framework:** (subdomain https://doc.nette.org)
- `application/` - MVC framework, presenters, routing, components
- `assets/` - Asset management and Vite integration
- `bootstrap/` - Application initialization and configuration
- `caching/` - Caching mechanisms
- `component-model/` - Component system and lifecycle
- `database/` - Database access layer, Explorer, transactions (subdomain https://doc.nette.org)
- `dependency-injection/` - DI container, autowiring, services
- `forms/` - Form creation, validation, rendering
- `http/` - HTTP request/response, sessions, URLs
- `mail/` - Email sending
- `neon/` - NEON format parser
- `nette/` - Main documentation hub, glossary, installation
- `php-generator/` - PHP code generation
- `robot-loader/` - Automatic class loader
- `safe-stream/` - Safe stream handling
- `security/` - Authentication, authorization, passwords
- `schema/` - Schema validation and generation
- `utils/` - Arrays, strings, filesystem, validation, datetime

**Key Projects from Nette Ecosystem:**
- `ai/` - Nette AI (subdomain https://ai.nette.org)
- `latte/` - Templating engine v3.0+ with `/cookbook/` subdirectory (only package with nested structure) (subdomain https://latte.nette.org)
- `tracy/` - Debugger, dumper, extensions (subdomain https://tracy.nette.org)
- `tester/` - Testing framework with assertions and TestCase (subdomain https://tester.nette.org)

**Supporting:** (subdomain https://doc.nette.org)
- `best-practices/` - Development patterns and recipes
- `code-checker/` - Code quality checker tool
- `contributing/` - Contribution guidelines and documentation standards
- `migrations/` - version upgrades
- `quickstart/` - Getting started tutorial
- `www/` - Website content, logo, license, packages (subdomain https://nette.org)

**Others:**
- `texy/` - Texy markup language processor (The project is not directly part of Nette, it is only located on the subdomain https://texy.nette.org)
- `dibi/` - Dibi database abstraction layer (The project is not directly part of Nette, it is only located on the subdomain https://dibi.nette.org)

**Structure notes:**
- All packages include `@home.texy` (entry point) and `@meta.texy` (metadata)
- Most packages include `@left-menu.texy` or `@menu.texy` for navigation

**Branch structure:**
- `master` - Current documentation (latest versions)
- `doc-3.x` - Version 3.x documentation
- `doc-2.x` - Legacy 2.x documentation

## File Format

Documentation uses **Texy markup** (`.texy` files), a custom markup language for structured content. Files contain headings, paragraphs, and code blocks parsed by the utilities in the root directory.

## Texy Documentation Modifiers

Use these modifiers when documenting API elements in `.texy` files:

**Methods** - use `[method]` modifier:
```texy
static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method]
-----------------------------------------------------------------------------------
Creates a new true color image of the given dimensions. The default color is black.
```

**Latte filters** - use `[filter]` modifier:
```texy
batch(int $length, mixed $item): array .[filter]
------------------------------------------------
Filter that simplifies outputting linear data in table form.
```

**New features** - use `{data-version:X.Y}` modifier with version number:
```texy
New great feature .{data-version:3.1}
-------------------------------------
Description of the feature.
```

**Deprecated items** - use `[deprecated]` modifier (without version number):
```texy
static rgb(int $red, int $green, int $blue, int $transparency=0): array .[method][deprecated]
---------------------------------------------------------------------------------------------
This function has been replaced by the `ImageColor` class.
```

**Combined modifiers** (e.g., new filter):
```texy
accept .[filter]{data-version:3.1}
----------------------------------
Filter used during migration from Latte 3.0 to confirm behavior change acceptance.
```

## Headings and Anchors

All headings automatically generate URL anchors based on their text. This allows linking directly to any section.

**Automatic anchors:**
- Heading "Installing Claude Code" → anchor `#installing-claude-code`
- Heading "What's Next" → anchor `#what-s-next`

**Linking to sections:**
```texy
See [installation guide |getting-started#installing-claude-code] for details.
```

**Custom anchors** - use `.{#anchor-name}` modifier when you need a specific anchor:
```texy
Installing Claude Code .{#Installing}
===============
```

This is useful when:
- The automatic anchor would be too long or unclear
- You want a stable anchor that won't change if you rename the heading
- You need to match an existing link from another page

## Documentation Guidelines

Follow Nette's documentation standards:
- Start with simple concepts, progress to advanced topics
- Test all code examples for accuracy
- Use clear, concise language
- Minimal use of highlighting and special formatting
- Adhere to [Coding Standard] in code examples

English is the primary language. Use DeepL Translator for translations, which will be reviewed by contributors.

## Writing Style

Nette documentation is known for its **friendly, approachable language** that remains **technically precise**. This style is a core part of the Nette brand and must be maintained across all documentation.

### Key Principles

1. **Friendly and approachable** – Write as if explaining to a colleague, not writing a technical manual
2. **Completely understandable** – No assumed knowledge; explain every concept when first introduced
3. **Technically accurate** – Use precise terminology and correct examples
4. **Only brief where clarity allows** – Never sacrifice understanding for brevity

### Good vs Bad Examples

**Good example:**
> MCP Inspector allows AI to look directly at your application – to see what services you have registered, what tables are in your database, and what routes lead where. Without this, the AI would have to guess based on patterns it learned during training.

**Bad example:**
> MCP Inspector provides runtime introspection via DI container, database schema, and router inspection tools.

The good example explains what the tool does and why it matters. The bad example is technically correct but assumes the reader already understands the concepts.

### Tone Guidelines

- Use "you" and "your" to address the reader directly
- Use "we" when walking through steps together ("Let's start by...")
- Explain the "why" not just the "what"
- Use concrete examples instead of abstract descriptions
- Anticipate questions and answer them proactively
- Avoid jargon; when technical terms are necessary, explain them

### Structure Guidelines

- Start each page with a `.[perex]` or `<div class=perex>` (for multiple paragraphs) summary that explains what the reader will learn
- Use clear, descriptive headings that tell the reader what each section contains
- Break complex topics into digestible sections
- Use code examples liberally – they're often clearer than prose
- End sections with "What's Next" links when appropriate

## Common Tasks

**Adding a new documentation page:**
1. **CRITICAL:** Create `.texy` file in BOTH `/en/` AND `/cs/` directories
2. Ensure both files have the same structure and line count
3. Follow existing structure (headings, code blocks, paragraphs)
4. Add code examples with proper syntax highlighting
5. Verify line alignment: `wc -l package/en/file.texy package/cs/file.texy`
8. Run code-checker before committing

**Editing existing documentation:**
1. **CRITICAL:** Edit ONLY `/cs/` and `/en/` versions - never edit de, fr, es, ru, etc.
2. Make parallel changes to both `/cs/` and `/en/` files
3. Maintain identical line counts - add/remove lines in both files simultaneously
4. Keep the same information on the same line numbers
6. Other language variants will be updated automatically by the translation system

### Example: Correct Way to Edit Documentation

**❌ WRONG - Editing only one language:**
```bash
# Don't do this!
vim application/en/presenters.texy
# Edit only English version
# Save and commit
```

**✅ CORRECT - Editing both synchronized versions:**
```bash
# Check current line counts
wc -l application/en/presenters.texy application/cs/presenters.texy
# Output: 510 application/en/presenters.texy
# 510 application/cs/presenters.texy

# Edit both files in parallel
vim application/en/presenters.texy application/cs/presenters.texy

# After editing, verify line counts still match
wc -l application/en/presenters.texy application/cs/presenters.texy
# Output should still be: 510 510
```

**Example of line-by-line correspondence:**
```
application/en/presenters.texy:
Line 1: Presenters
Line 14: [We already know...
Line 510: (last line)

application/cs/presenters.texy:
Line 1: Presentery
Line 14: [Už víme...
Line 510: (last line)
```

Both files have identical structure, same number of lines, same information on corresponding lines - only the language differs.
11 changes: 11 additions & 0 deletions ai/cs/@home.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Nette AI
********

- [Introduction |guide]
- [Getting Started |getting-started]
- [MCP Inspector |mcp-inspector]
- [Claude Code |claude-code]
- [Tips & Best Practices |tips]

{{maintitle: Nette AI – Vibe Coding with Nette Framework}}
{{description: Build Nette applications with AI assistance. MCP Inspector gives any AI tool deep knowledge of your application's DI container, database, routing, and errors. No hallucinations, just clean code.}}
1 change: 1 addition & 0 deletions ai/cs/@meta.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{sitename: Nette AI}}
11 changes: 11 additions & 0 deletions ai/en/@home.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Nette AI
********

- [Introduction |guide]
- [Getting Started |getting-started]
- [MCP Inspector |mcp-inspector]
- [Claude Code |claude-code]
- [Tips & Best Practices |tips]

{{maintitle: Nette AI – Vibe Coding with Nette Framework}}
{{description: Build Nette applications with AI assistance. MCP Inspector gives any AI tool deep knowledge of your application's DI container, database, routing, and errors. No hallucinations, just clean code.}}
5 changes: 5 additions & 0 deletions ai/en/@left-menu.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- [Introduction |guide]
- [Getting Started |getting-started]
- [MCP Inspector |mcp-inspector]
- [Claude Code |claude-code]
- [Tips & Best Practices |tips]
1 change: 1 addition & 0 deletions ai/en/@meta.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{sitename: Nette AI}}
Loading
Loading