-
Notifications
You must be signed in to change notification settings - Fork 0
includes docs #70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
includes docs #70
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds comprehensive documentation for Respo, a virtual DOM library built in Calcit-js. The documentation is reused from a guidebook and covers various aspects of the framework including components, rendering, state management, and API references.
Key changes include:
- Added complete guide documentation covering core concepts like virtual DOM, components, and states
- Included API documentation with detailed function references
- Added beginner guide and practical examples
Reviewed Changes
Copilot reviewed 37 out of 38 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/guide/why-respo.md | Introduction explaining Respo's philosophy and comparison with alternatives |
| docs/guide/virtual-dom.md | Technical explanation of virtual DOM implementation in Respo |
| docs/guide/styles.md | Guide for styling components including static styles and server rendering |
| docs/guide/server-rendering.md | Documentation for server-side rendering setup and configuration |
| docs/guide/render-list.md | Instructions for rendering dynamic lists of components |
| docs/guide/pros-and-cons.md | Balanced overview of framework advantages and limitations |
| docs/guide/hot-swapping.md | Guide for development workflow with hot code reloading |
| docs/guide/dom-properties.md | Reference for DOM property mapping and implementation details |
| docs/guide/dom-events.md | Event handling system documentation with examples |
| docs/guide/dom-elements.md | Element creation and usage patterns |
| docs/guide/component-states.md | Comprehensive state management guide |
| docs/guide/base-components.md | Documentation of built-in utility components |
| docs/beginner-guide.md | Complete tutorial for new users |
| docs/apis/*.md | Function-by-function API reference documentation |
| docs/api.md | Overview of all available APIs organized by namespace |
| compact.cirru | Version bump from 0.16.16 to 0.16.17 |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughBumps package version to 0.16.18, adds multiple HTML element wrappers (h5, h6, hr, ol, p, strong, ul) and extends CodeEntry definitions in calcit.cirru; adds a large set of documentation pages (API reference, per-API docs, and many guides). Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 117
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (5)
docs/apis/make-html.md (1)
1-12: Use H1 and polish grammar
- Promote the first heading to H1 (MD041).
- Prefer “a virtual DOM” and succinct phrasing.
-## `make-html` +# `make-html` -Generate HTML from virtual DOM: +Generate HTML from a virtual DOM: ```cirru make-html (div $ {}) ; "<div></div>"-This feature makes Respo a simple template engine.
-<html>,<head>and<body>are supported, so it's capable of rendering the entry HTML file.
+This feature lets Respo act as a simple template engine.
+<html>,<head>, and<body>are supported, so it can render the entry HTML file.</blockquote></details> <details> <summary>docs/guide/pros-and-cons.md (1)</summary><blockquote> `1-15`: **Add top-level title and refine bullets** - Add an H1 (MD041). - Minor grammar/wording fixes; “lifecycles” (no hyphen). ```diff -## Pros +# Pros and Cons + +## Pros -- Pure ClojureScript, immutable by default with optimizations -- Global states, hot swapping -- Flexible HTML DSL with Calcit-js -- Fewer side effects, less position to make mistakes -- Flexible component state +- Pure ClojureScript; immutable by default with optimizations +- Global state with hot swapping +- Flexible HTML DSL with Calcit-js +- Fewer side effects; smaller surface for mistakes +- Flexible component state -## Cons +## Cons -- Very few components to use -- Users need to handle life-cycles manually +- Very few components available +- Users need to handle lifecycles manually - No support for animations - Not as fast as React.jsdocs/apis/defeffect.md (1)
36-38: Clarify restrictions; fix wording.-Respo is different from React. You can not dispatch action during rendering, or inside effects. -So there will be no access to `dispatch!`, and should not have actions. +Respo is different from React. You cannot dispatch actions during rendering or inside effects. +There is no access to `dispatch!`, and effects should not perform actions.docs/guide/dom-elements.md (1)
58-59: Tighten wording.-Some are not, but you can create them very quickly with [`create-element`](../apis/create-element.md). +Others are not, but you can create them quickly with [`create-element`](../apis/create-element.md).docs/api.md (1)
48-48: Remove stray character and ensure code fence closureThere’s a lone “48” at EOF which will break rendering. Remove it and ensure the closing backticks match.
-48 +
♻️ Duplicate comments (2)
docs/guide/base-components.md (1)
15-15: Previous typo resolved.
The “routering → routing” issue is already fixed here. Nothing to do.docs/guide/virtual-dom.md (1)
3-3: Fix incomplete/awkward lead sentence.Tighten wording; prior feedback already flagged this.
-There are elements and components before they are actually rendered. After rendering, all elements have specific definitions: +Before rendering, Respo deals with elements and components as data. After rendering, each element has a concrete definition:
calcit.cirru
Outdated
|
|
||
| {} (:package |respo) | ||
| :configs $ {} (:init-fn |respo.main/main!) (:port 6001) (:reload-fn |respo.main/reload!) (:storage-key |calcit.cirru) (:version |0.16.16) | ||
| :configs $ {} (:init-fn |respo.main/main!) (:port 6001) (:reload-fn |respo.main/reload!) (:storage-key |calcit.cirru) (:version |0.16.17) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Avoid version drift by centralizing version management.
Consider a single source of truth (e.g., a versions.edn or release script) to propagate the version to calcit.cirru, compact.cirru, and docs during release.
🤖 Prompt for AI Agents
In calcit.cirru around line 3, the hardcoded version literal causes drift across
calcit.cirru, compact.cirru, and docs; replace this ad-hoc value with a
single-source approach by introducing a versions.edn (or similar) and modify the
release/build script to inject or generate the correct version into
calcit.cirru, compact.cirru, and documentation files at release time (or have
the files read the version from versions.edn at startup/build); ensure the
release script updates all targets atomically so the version is propagated
consistently.
💡 Verification agent
🧩 Analysis chain
Version bump to 0.16.17 looks good; no semantic config changes detected.
Please ensure all references to 0.16.16 elsewhere (docs, examples, badges) are updated and tag the release.
Run to catch stragglers:
🏁 Script executed:
#!/bin/bash
# Find stale version strings
rg -n '0\.16\.16' -S -g '!**/node_modules/**' -g '!**/dist/**' -g '!**/build/**'Length of output: 121
Update package.json version to 0.16.17
package.json still contains "version": "0.16.16" on line 2.
🤖 Prompt for AI Agents
In calcit.cirru around line 3, the configs indicate version 0.16.17 but
package.json still has "version": "0.16.16" (line 2); update package.json's
version field to "0.16.17" (ensure exact JSON syntax, save file) so the declared
package version matches the config.
compact.cirru
Outdated
|
|
||
| {} (:package |respo) | ||
| :configs $ {} (:init-fn |respo.main/main!) (:reload-fn |respo.main/reload!) (:version |0.16.16) | ||
| :configs $ {} (:init-fn |respo.main/main!) (:reload-fn |respo.main/reload!) (:version |0.16.17) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Version bump to 0.16.17 — verify consistency across manifests/docs
Ensure all places that surface the library version (calcit.cirru, README, docs, release notes) are updated to 0.16.17 to avoid confusion.
🏁 Script executed:
#!/bin/bash
# Find version declarations/usages that still reference 0.16.16 or differ from 0.16.17
rg -nP '(:version\s+\|0\.16\.\d+)|0\.16\.16' -C2Length of output: 757
Update package.json version to 0.16.17
package.json still declares "version": "0.16.16" (line 2); bump it to "0.16.17" to match the Cirru manifests and avoid version mismatches.
🤖 Prompt for AI Agents
In package.json around line 2 and in compact.cirru at lines 3 (file
compact.cirru line 3 shows version 0.16.17), package.json still lists "version":
"0.16.16" causing a mismatch; update the "version" field in package.json to
"0.16.17" so it matches the Cirru manifest, then run a quick package lint or npm
pack to confirm no other references need bumping.
compact.cirru
Outdated
| let[] ~args ~args-var $ let[] ~params ~params-var | ||
| ~@ $ if (empty? body) | ||
| quasiquote $ println "\"WARNING:" ~effect-name "\"lack code for handling effects!" | ||
| quasiquote $ println "\"WARNING:" ~effect-name "\"lack code for handling effects!" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Avoid noisy warnings in production; gate behind dev flag and fix wording
Print the warning only in dev builds; tweak message grammar.
- quasiquote $ println "\"WARNING:" ~effect-name "\"lack code for handling effects!"
+ quasiquote $ when schema/dev?
+ println "\"WARNING:" ~effect-name "\"lacks handlers for effects; method is a no-op."📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| quasiquote $ println "\"WARNING:" ~effect-name "\"lack code for handling effects!" | |
| quasiquote $ when schema/dev? | |
| println "\"WARNING:" ~effect-name "\"lacks handlers for effects; method is a no-op." |
🤖 Prompt for AI Agents
In compact.cirru around line 726, the warning print is noisy in production and
grammatically awkward; wrap the println so it only executes when a dev/debug
flag is enabled (e.g., check a global/dev-mode variable or compile-time dev
constant) and update the message wording to something like "WARNING: no handler
for effect <effect-name>" (ensure proper spacing and quoting). Ensure the guard
is present wherever this warning can be emitted so production builds don't log
it.
| ## `activate-instance` | ||
|
|
||
| Function for initializing app: | ||
|
|
||
| - setup event listeners the mount point element | ||
| - render and mount element |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Confirm API name consistency (activate-instance vs activate-instance!).
Docs elsewhere sometimes use a trailing bang for side-effecting fns. Verify the canonical name matches code.
🏁 Script executed:
#!/bin/bash
# Search repo for symbol usage to confirm canonical name
rg -n -C2 -S --glob '!.git/' 'activate-instance!?'Length of output: 3413
Consistently use activate-instance! in docs/apis/activate-instance.md
The function is defined and used as activate-instance! in code and in docs/api.md; update the header (line 1) and any occurrences to include the trailing bang.
🧰 Tools
🪛 LanguageTool
[grammar] ~3-~3: There might be a problem here.
Context: ...nstance` Function for initializing app: - setup event listeners the mount point element...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~5-~5: Insert the missing word
Context: ...on for initializing app: - setup event listeners the mount point element - render and mo...
(QB_NEW_EN_OTHER_ERROR_IDS_32)
[grammar] ~6-~6: There might be a mistake here.
Context: ...rs the mount point element - render and mount element
(QB_NEW_EN)
[grammar] ~6-~6: Use articles correctly
Context: ...point element - render and mount element
(QB_NEW_EN_OTHER_ERROR_IDS_11)
🪛 markdownlint-cli2 (0.17.2)
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In docs/apis/activate-instance.md around lines 1 to 6, the header and any
occurrences use `activate-instance` but the actual function name (and usage
elsewhere) includes a trailing bang `activate-instance!`; update the document to
consistently use `activate-instance!` by changing the top-level header and any
mentions within these lines to include the trailing exclamation mark so the docs
match code and docs/api.md.
🧹 Nitpick (assertive)
Fix heading level and grammar.
Address MD041 and small grammar issues.
-## `activate-instance`
+# `activate-instance`
-Function for initializing app:
+Initialize the app:
-- setup event listeners the mount point element
-- render and mount element
+- Set up event listeners on the mount-point element.
+- Render and mount the element.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## `activate-instance` | |
| Function for initializing app: | |
| - setup event listeners the mount point element | |
| - render and mount element | |
| # `activate-instance` | |
| Initialize the app: | |
| - Set up event listeners on the mount-point element. | |
| - Render and mount the element. |
🧰 Tools
🪛 LanguageTool
[grammar] ~3-~3: There might be a problem here.
Context: ...nstance` Function for initializing app: - setup event listeners the mount point element...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~5-~5: Insert the missing word
Context: ...on for initializing app: - setup event listeners the mount point element - render and mo...
(QB_NEW_EN_OTHER_ERROR_IDS_32)
[grammar] ~6-~6: There might be a mistake here.
Context: ...rs the mount point element - render and mount element
(QB_NEW_EN)
[grammar] ~6-~6: Use articles correctly
Context: ...point element - render and mount element
(QB_NEW_EN_OTHER_ERROR_IDS_11)
🪛 markdownlint-cli2 (0.17.2)
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In docs/apis/activate-instance.md lines 1–6, change the heading from "##
`activate-instance`" to a top-level heading "# `activate-instance`" to satisfy
MD041, and fix the two bullet grammars: change "setup event listeners the mount
point element" to "set up event listeners on the mount point element" and
"render and mount element" to "render and mount the element."
| ## `apply-dom-changes` | ||
|
|
||
| Apply patches on the real DOM. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Promote to H1; minor preposition fix.
MD041 and phrasing.
-## `apply-dom-changes`
+# `apply-dom-changes`
-Apply patches on the real DOM.
+Apply patches to the real DOM.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## `apply-dom-changes` | |
| Apply patches on the real DOM. | |
| # `apply-dom-changes` | |
| Apply patches to the real DOM. |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In docs/apis/apply-dom-changes.md around lines 1 to 3, change the level-2
heading to a level-1 heading and fix the preposition in the description: replace
"## `apply-dom-changes`" with "# `apply-dom-changes`" and update the sentence
"Apply patches on the real DOM." to "Apply patches to the real DOM."
| ## Hot swapping | ||
|
|
||
| Hot swapping is done by the compiler. What you need to do is to call `respo.core/clear-cache!` before re-rendering happens: | ||
|
|
||
| ```cirru |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix heading level and tighten the instruction sentence.
Apply:
-## Hot swapping
-
-Hot swapping is done by the compiler. What you need to do is to call `respo.core/clear-cache!` before re-rendering happens:
+# Hot swapping
+
+Hot swapping is done by the compiler. Call `respo.core/clear-cache!` before re-rendering:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Hot swapping | |
| Hot swapping is done by the compiler. What you need to do is to call `respo.core/clear-cache!` before re-rendering happens: | |
| ```cirru | |
| # Hot swapping | |
| Hot swapping is done by the compiler. Call `respo.core/clear-cache!` before re-rendering: |
🧰 Tools
🪛 LanguageTool
[grammar] ~1-~1: Use correct spacing
Context: ## Hot swapping Hot swapping is done by the compiler. Wh...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: ...ear-cache!` before re-rendering happens: cirru defn reload! () ; "clear component caches" clear-cache! ; "rerender DOM tree, I mean, a diff/patch loop" render-app! println "|Code update." If you don't, in the next rendering phas...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🪛 markdownlint-cli2 (0.17.2)
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In docs/guide/hot-swapping.md around lines 1 to 5, the top-level heading uses
"##" (h2) and the instruction sentence is wordy; change the heading to a proper
h1 ("# Hot swapping") and tighten the instruction to a single concise imperative
sentence (e.g., "Call `respo.core/clear-cache!` before re-rendering.") ensuring
punctuation and formatting are consistent.
| In Respo, you are asked to define `*store` explicitly. They the global states of data. As an Atom, the value inside is immutable, but the reference is mutable. During hot swapping, variables defined with `defatom` will be retained. As a result, component states are persistent even code is swapped: | ||
|
|
||
| ```cirru | ||
| defatom *store $ atom | ||
| or | ||
| let | ||
| raw $ or | ||
| js/localStorage.getItem "|respo" | ||
| , "|{:data [], :states {}}" | ||
| read-string raw | ||
| , schema/store | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix grammar around global store; clarify persistence wording.
Apply:
-In Respo, you are asked to define `*store` explicitly. They the global states of data. As an Atom, the value inside is immutable, but the reference is mutable. During hot swapping, variables defined with `defatom` will be retained. As a result, component states are persistent even code is swapped:
+In Respo, define `*store` explicitly—your global state. As an Atom, the value is immutable but the reference is mutable. During hot swapping, variables defined with `defatom` are retained, so component state persists even when code is swapped:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| In Respo, you are asked to define `*store` explicitly. They the global states of data. As an Atom, the value inside is immutable, but the reference is mutable. During hot swapping, variables defined with `defatom` will be retained. As a result, component states are persistent even code is swapped: | |
| ```cirru | |
| defatom *store $ atom | |
| or | |
| let | |
| raw $ or | |
| js/localStorage.getItem "|respo" | |
| , "|{:data [], :states {}}" | |
| read-string raw | |
| , schema/store | |
| ``` | |
| In Respo, define `*store` explicitly—your global state. As an Atom, the value is immutable but the reference is mutable. During hot swapping, variables defined with `defatom` are retained, so component state persists even when code is swapped: | |
🧰 Tools
🪛 LanguageTool
[grammar] ~16-~16: Insert the missing word
Context: ...re asked to define *store explicitly. They the global states of data. As an Atom, ...
(QB_NEW_EN_OTHER_ERROR_IDS_32)
[grammar] ~16-~16: There might be a mistake here.
Context: ...result, component states are persistent even code is swapped: ```cirru defatom *sto...
(QB_NEW_EN_OTHER)
[grammar] ~16-~16: Use correct spacing
Context: ...tes are persistent even code is swapped: cirru defatom *store $ atom or let raw $ or js/localStorage.getItem "|respo" , "|{:data [], :states {}}" read-string raw , schema/store
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/guide/hot-swapping.md around lines 16 to 27, fix the grammar and clarity
around the global store and persistence: change "They the global states of
data." to a clear sentence like "They are the global state containers for
application data," rephrase the Atom description to "An Atom holds an immutable
value and a mutable reference," and reword the hot-swapping sentence to state
that variables created with defatom are retained across code swaps so component
state persists when code is hot-swapped; keep the example block unchanged except
for any incidental comment wording improvements to match the corrected
explanations.
| ## Render list | ||
|
|
||
| To render a list, you need use `respo.core/list->` with children in `key/value` pairs: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix heading level and opening sentence (“need use” → “need to use”).
Apply:
-## Render list
-
-To render a list, you need use `respo.core/list->` with children in `key/value` pairs:
+# Render list
+
+To render a list, you need to use `respo.core/list->` with children in `key/value` pairs:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Render list | |
| To render a list, you need use `respo.core/list->` with children in `key/value` pairs: | |
| # Render list | |
| To render a list, you need to use `respo.core/list->` with children in `key/value` pairs: |
🧰 Tools
🪛 LanguageTool
[grammar] ~1-~1: Use correct spacing
Context: ## Render list To render a list, you need use `respo.co...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: There might be a mistake here.
Context: ## Render list To render a list, you need use respo.core/list-> with children i...
(QB_NEW_EN_OTHER)
[grammar] ~3-~3: Use correct spacing
Context: ...t->with children inkey/valuepairs: ```cirru list-> {} :style $ {} [] [] "a" (comp-text "|this is A" nil) [] "b" (comp-text "|this is B" nil) ``` If the tag is:div`, you can omit that ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🪛 markdownlint-cli2 (0.17.2)
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In docs/guide/render-list.md around lines 1 to 3, the heading level and opening
sentence are incorrect: change the heading to the appropriate markdown level
(e.g., ensure it's a top-level or consistent section header) and fix the
sentence from “you need use `respo.core/list->`” to “you need to use
`respo.core/list->` with children in `key/value` pairs”; update only the heading
markup and the verb phrasing to read correctly.
| @@ -0,0 +1,11 @@ | |||
| ## Why Respo? | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Promote to H1 to satisfy MD041.
-## Why Respo?
+# Why Respo?📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Why Respo? | |
| # Why Respo? |
🧰 Tools
🪛 LanguageTool
[grammar] ~1-~1: Use correct spacing
Context: ## Why Respo? There are quite some alternatives actual...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🪛 markdownlint-cli2 (0.17.2)
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In docs/guide/why-respo.md around line 1, the heading currently uses "## Why
Respo?" which triggers MD041; change the heading level to H1 by replacing "##"
with a single "#" so the file starts with "# Why Respo?" and save the file (no
other content changes required).
| There are quite some alternatives actually: Reagent, Om, React.js , Deku, or Rum. | ||
| I think Om is too complicated for me. | ||
|
|
||
| The different part of Respo is, it's built in Calcit-js with persistent data structure from scratch. | ||
| It can be too simple for real world apps that requires lots of side effects, but it is fine to build medium size apps and do experiments about MVC. | ||
| Respo is designed carefully to maintain global store and global states, | ||
| as a result hot code swapping is more predictable. | ||
|
|
||
| For short, it's simpler, meanwhile purer. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Polish grammar, punctuation, and clarity.
-There are quite some alternatives actually: Reagent, Om, React.js , Deku, or Rum.
-I think Om is too complicated for me.
-
-The different part of Respo is, it's built in Calcit-js with persistent data structure from scratch.
-It can be too simple for real world apps that requires lots of side effects, but it is fine to build medium size apps and do experiments about MVC.
-Respo is designed carefully to maintain global store and global states,
-as a result hot code swapping is more predictable.
-
-For short, it's simpler, meanwhile purer.
+There are many alternatives: Reagent, Om, React, Deku, and Rum.
+Om feels too complicated for me.
+
+What’s different about Respo is that it’s built in Calcit‑js with a from‑scratch persistent data structure.
+It can be too simple for real‑world apps that require lots of side effects, but it works well for medium‑sized apps and MVC experiments.
+Respo is carefully designed to maintain a global store and global component states;
+as a result, hot code swapping is more predictable.
+
+In short, it’s simpler and purer.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| There are quite some alternatives actually: Reagent, Om, React.js , Deku, or Rum. | |
| I think Om is too complicated for me. | |
| The different part of Respo is, it's built in Calcit-js with persistent data structure from scratch. | |
| It can be too simple for real world apps that requires lots of side effects, but it is fine to build medium size apps and do experiments about MVC. | |
| Respo is designed carefully to maintain global store and global states, | |
| as a result hot code swapping is more predictable. | |
| For short, it's simpler, meanwhile purer. | |
| There are many alternatives: Reagent, Om, React, Deku, and Rum. | |
| Om feels too complicated for me. | |
| What’s different about Respo is that it’s built in Calcit-js with a from-scratch persistent data structure. | |
| It can be too simple for real-world apps that require lots of side effects, but it works well for medium-sized apps and MVC experiments. | |
| Respo is carefully designed to maintain a global store and global component states; | |
| as a result, hot code swapping is more predictable. | |
| In short, it’s simpler and purer. |
🧰 Tools
🪛 LanguageTool
[grammar] ~3-~3: There might be a mistake here.
Context: ...rnatives actually: Reagent, Om, React.js , Deku, or Rum. I think Om is too compli...
(QB_NEW_EN_OTHER)
[grammar] ~3-~3: There might be a mistake here.
Context: ...y: Reagent, Om, React.js , Deku, or Rum. I think Om is too complicated for me. T...
(QB_NEW_EN)
[grammar] ~4-~4: Use correct spacing
Context: ...m. I think Om is too complicated for me. The different part of Respo is, it's bui...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~6-~6: There might be a mistake here.
Context: ... for me. The different part of Respo is, it's built in Calcit-js with persistent...
(QB_NEW_EN_OTHER)
[grammar] ~6-~6: There might be a mistake here.
Context: ... persistent data structure from scratch. It can be too simple for real world apps...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...m scratch. It can be too simple for real world apps that requires lots of side ef...
(QB_NEW_EN_OTHER)
[grammar] ~7-~7: Make sure you are using the right part of speech
Context: ... be too simple for real world apps that requires lots of side effects, but it is fine to...
(QB_NEW_EN_OTHER_ERROR_IDS_21)
[style] ~7-~7: Consider using a synonym to be more concise.
Context: ...imple for real world apps that requires lots of side effects, but it is fine to build m...
(A_LOT_OF)
[grammar] ~7-~7: There might be a mistake here.
Context: ...f side effects, but it is fine to build medium size apps and do experiments about MVC. Resp...
(QB_NEW_EN_OTHER)
[grammar] ~7-~7: There might be a mistake here.
Context: ... size apps and do experiments about MVC. Respo is designed carefully to maintain ...
(QB_NEW_EN)
[grammar] ~8-~8: There might be a mistake here.
Context: ...lly to maintain global store and global states, as a result hot code swapping is more pr...
(QB_NEW_EN_OTHER)
[grammar] ~9-~9: There might be a mistake here.
Context: ...in global store and global states, as a result hot code swapping is more predictable. ...
(QB_NEW_EN_OTHER)
[grammar] ~9-~9: There might be a problem here.
Context: ...t hot code swapping is more predictable. For short, it's simpler, meanwhile purer.
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~11-~11: There might be a mistake here.
Context: ...g is more predictable. For short, it's simpler, meanwhile purer.
(QB_NEW_EN_OTHER)
[grammar] ~11-~11: There might be a mistake here.
Context: ... predictable. For short, it's simpler, meanwhile purer.
(QB_NEW_EN_OTHER)
[grammar] ~11-~11: There might be a mistake here.
Context: ...or short, it's simpler, meanwhile purer.
(QB_NEW_EN)
🤖 Prompt for AI Agents
In docs/guide/why-respo.md around lines 3 to 11, the paragraph needs
grammatical, punctuation, and clarity fixes: rewrite the alternatives list with
consistent punctuation and capitalization (e.g., "Reagent, Om, React.js, Deku,
or Rum."), change "The different part of Respo is, it's built in Calcit-js with
persistent data structure from scratch." to a clearer sentence like "Respo's
distinctive feature is that it is built in Calcit.js using persistent data
structures implemented from scratch.", pluralize "data structure" to "data
structures", change "It can be too simple for real world apps that requires lots
of side effects" to "It can be too simple for real-world apps that require many
side effects", replace "hot code swapping" with "hot code reloading" (or
"hot-swapping") and tighten the last sentence to "In short, it's simpler yet
purer.", and remove extra commas and fix spacing throughout for readability.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review continued from previous batch...
| @@ -0,0 +1,37 @@ | |||
| ## `defeffect` | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Use a top-level heading (fix MD041).
-## `defeffect`
+# `defeffect`📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## `defeffect` | |
| # `defeffect` |
🤖 Prompt for AI Agents
In docs/apis/defeffect.md around line 1, the heading uses a level-2 heading ("##
`defeffect`") and needs to be a top-level heading to fix MD041; change the
leading "##" to a single "#" so the file starts with a top-level heading (e.g.,
"# `defeffect`") and save the file.
| - `[] a b` are arguments. they can also be old arguments during unmounting, | ||
| - `action` can be `:mount` `:before-update` `:update` or `:unmount`, | ||
| - `el` refers to root element of component. | ||
| - `at-place?` being `true` if change happen exactly from this component, rather than from parents. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Polish bullet points and fix grammar.
-- `[] a b` are arguments. they can also be old arguments during unmounting,
-- `action` can be `:mount` `:before-update` `:update` or `:unmount`,
-- `el` refers to root element of component.
-- `at-place?` being `true` if change happen exactly from this component, rather than from parents.
+- `[] a b` are arguments. They can also be previous arguments during unmounting.
+- `action` can be `:mount`, `:before-update`, `:update`, or `:unmount`.
+- `el` refers to the root element of the component.
+- `at-place?` is `true` if the change happens at this component rather than from parents.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - `[] a b` are arguments. they can also be old arguments during unmounting, | |
| - `action` can be `:mount` `:before-update` `:update` or `:unmount`, | |
| - `el` refers to root element of component. | |
| - `at-place?` being `true` if change happen exactly from this component, rather than from parents. | |
| - `[] a b` are arguments. They can also be previous arguments during unmounting. | |
| - `action` can be `:mount`, `:before-update`, `:update`, or `:unmount`. | |
| - `el` refers to the root element of the component. | |
| - `at-place?` is `true` if the change happens at this component rather than from parents. |
🧰 Tools
🪛 LanguageTool
[grammar] ~21-~21: There might be a mistake here.
Context: ...also be old arguments during unmounting, - action can be :mount :before-update `:updat...
(QB_NEW_EN_OTHER)
[grammar] ~22-~22: There might be a problem here.
Context: ...ts during unmounting, - action can be :mount :before-update :update or :unmount, - el refers to root el...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~22-~22: There might be a problem here.
Context: ...:before-update :updateor:unmount, - elrefers to root element of component. -at-place?...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~23-~23: There might be a mistake here.
Context: ...unmount, - elrefers to root element of component. -at-place?beingtrue` i...
(QB_NEW_EN)
[grammar] ~23-~23: There might be a problem here.
Context: ...elrefers to root element of component. -at-place?beingtrue` if change happen exactly fr...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~24-~24: Make sure you are using the right part of speech
Context: ...t. - at-place? being true if change happen exactly from this component, rather tha...
(QB_NEW_EN_OTHER_ERROR_IDS_21)
[grammar] ~24-~24: Use correct spacing
Context: ...his component, rather than from parents. Notice that to add effects into componen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/apis/defeffect.md around lines 21 to 25, the bullet points need
grammatical fixes and clearer phrasing: rewrite them to use consistent
punctuation and capitalization, clarify that "[] a b" are the effect arguments
(and may contain previous arguments during unmount), enumerate allowed action
values as :mount, :before-update, :update, or :unmount, state that "el" is the
component's root DOM element, and rephrase "at-place?" to indicate it is true
when the change originated from this component rather than from a parent; ensure
each bullet is a short, grammatical sentence.
| Notice that to add effects into component, we need to use a vector. | ||
| So it's also possible to add multiple effects here: | ||
|
|
||
| ```cirru | ||
| [] | ||
| defeffect-a a b | ||
| defeffect-b c d | ||
| div $ {} | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Inconsistent effect names in example.
Earlier you define effect-a; below uses defeffect-a/defeffect-b. Use effect identifiers consistently.
[]
- defeffect-a a b
- defeffect-b c d
+ effect-a a b
+ effect-b c d
div $ {}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Notice that to add effects into component, we need to use a vector. | |
| So it's also possible to add multiple effects here: | |
| ```cirru | |
| [] | |
| defeffect-a a b | |
| defeffect-b c d | |
| div $ {} | |
| ``` |
🧰 Tools
🪛 LanguageTool
[grammar] ~26-~26: There might be a mistake here.
Context: ...om parents. Notice that to add effects into component, we need to use a vector. So ...
(QB_NEW_EN)
[grammar] ~26-~26: There might be a mistake here.
Context: ...into component, we need to use a vector. So it's also possible to add multiple ef...
(QB_NEW_EN)
[grammar] ~27-~27: Use correct spacing
Context: ...o possible to add multiple effects here: cirru [] defeffect-a a b defeffect-b c d div $ {} Respo is different from React. You can n...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/apis/defeffect.md around lines 26 to 34, the example uses inconsistent
effect names ("defeffect-a" and "defeffect-b") while earlier the document
defines "effect-a"; update the example to use the same identifiers (e.g.,
"effect-a" and "effect-b") so effect names are consistent across the doc,
keeping the vector form and demonstrating multiple effects as intended.
| Want to explore by yourself? | ||
|
|
||
| - Minimal App <https://github.com/Respo/minimal-respo> | ||
| - Examples <https://github.com/Respo/respo-examples> | ||
| - Complicated editor in Respo <https://github.com/Cirru/calcit-editor> | ||
|
|
||
| ### What is Respo? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Add a top-level title and convert the opener to a subheading.
Also fixes MD041.
-Want to explore by yourself?
+# Beginner guide
+
+Want to explore by yourself?📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Want to explore by yourself? | |
| - Minimal App <https://github.com/Respo/minimal-respo> | |
| - Examples <https://github.com/Respo/respo-examples> | |
| - Complicated editor in Respo <https://github.com/Cirru/calcit-editor> | |
| ### What is Respo? | |
| # Beginner guide | |
| Want to explore by yourself? | |
| - Minimal App <https://github.com/Respo/minimal-respo> | |
| - Examples <https://github.com/Respo/respo-examples> | |
| - Complicated editor in Respo <https://github.com/Cirru/calcit-editor> | |
| ### What is Respo? |
🧰 Tools
🪛 LanguageTool
[grammar] ~1-~1: Use correct spacing
Context: Want to explore by yourself? - Minimal App <https://github.com/Respo/mi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: There might be a mistake here.
Context: ... https://github.com/Respo/minimal-respo - Examples <https://github.com/Respo/respo...
(QB_NEW_EN)
[grammar] ~4-~4: There might be a mistake here.
Context: ...https://github.com/Respo/respo-examples - Complicated editor in Respo <https://git...
(QB_NEW_EN)
[grammar] ~5-~5: Use correct spacing
Context: ... https://github.com/Cirru/calcit-editor ### What is Respo? Respo is a virtual DOM l...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: Use correct spacing
Context: ...Cirru/calcit-editor> ### What is Respo? Respo is a virtual DOM library like Reac...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/beginner-guide.md around lines 1 to 7, add a top-level title as the very
first line (e.g., "# Beginner Guide") so the file begins with an H1 (fixing
MD041), then convert the current opener line "Want to explore by yourself?" into
a subheading (e.g., "## Want to explore by yourself?") and ensure a blank line
separates the H1 from the rest of the content; keep the bullet list of links
unchanged under the new subheading.
| ### Before start | ||
|
|
||
| Besides experiences on Web apps, you also need to know: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Heading and phrasing.
-### Before start
+### Before you start📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ### Before start | |
| Besides experiences on Web apps, you also need to know: | |
| ### Before you start | |
| Besides experiences on Web apps, you also need to know: |
🧰 Tools
🪛 LanguageTool
[grammar] ~11-~11: Use the right verb tense
Context: ...ace functional programming. ### Before start Besides experiences on Web apps, you als...
(QB_NEW_EN_OTHER_ERROR_IDS_13)
[grammar] ~13-~13: Use correct spacing
Context: ...nces on Web apps, you also need to know: - Calcit-js http://calcit-lang.org ### ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/beginner-guide.md around lines 11 to 13, the heading "Before start" and
the sentence "Besides experiences on Web apps, you also need to know:" are
grammatically awkward; change the heading to a proper phrase like "Before you
start" or "Getting started" and reword the sentence to something clearer and
more natural such as "In addition to experience with web apps, you should also
know:" ensuring capitalization and spacing are correct.
|
|
||
| A macro `respo.css/defstyle` has been added for add `<style>...</style>` referred with `:class-name`. It's less dynamic, which means you cannot pass parameters to styles in this way. It will insert into `<head>...</head>` a `<style>...</style>` element. It runs before `main!` and `reload!`. | ||
|
|
||
|  |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Add alt text to image (MD045).
-
+📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
|  | |
|  |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
51-51: Images should have alternate text (alt text)
(MD045, no-alt-text)
🤖 Prompt for AI Agents
In docs/guide/styles.md around line 51, the markdown image lacks alt text which
triggers MD045; update the image tag to include a concise, descriptive alt
string (e.g., ) that conveys the
image content/purpose for accessibility and screen readers, keeping it brief and
relevant to the surrounding text.
| :border :none | ||
| ``` | ||
|
|
||
| `$0` will be replace by a string of `className`. So if you want to add rules for `:hover`, just write `$0:hover`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Verb tense.
-`$0` will be replace by a string of `className`. So if you want to add rules for `:hover`, just write `$0:hover`.
+`$0` will be replaced by the generated `className`. To add a `:hover` rule, write `$0:hover`.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| `$0` will be replace by a string of `className`. So if you want to add rules for `:hover`, just write `$0:hover`. | |
| `$0` will be replaced by the generated `className`. To add a `:hover` rule, write `$0:hover`. |
🧰 Tools
🪛 LanguageTool
[grammar] ~66-~66: Use the right verb tense
Context: ... 94 :border :none ``` $0 will be replace by a string of `className`. So if you w...
(QB_NEW_EN_OTHER_ERROR_IDS_13)
[grammar] ~66-~66: Use correct spacing
Context: ...les for :hover, just write $0:hover. cirru input $ {} (:placeholder "\"Text") :value $ :draft state :class-name style-input :style $ {} :width $ &max 200 + 24 $ text-width (:draft state) 16 |BlinkMacSystemFont Internally, a definition of `respo.app.c...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/guide/styles.md around line 66, the sentence " ` $0 ` will be replace by
a string of `className`..." uses incorrect verb tense and informal phrasing;
update it to use correct past participle and cleaner phrasing (e.g., "will be
replaced by a string containing the className" and change "So if you want to add
rules for `:hover`, just write `$0:hover`" to "If you want to add rules for
`:hover`, write `$0:hover`") to fix grammar and tone.
| @@ -0,0 +1,63 @@ | |||
| ## Virtual DOM | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Use a top-level H1 heading (or disable MD041 for docs).
Change "## Virtual DOM" to "# Virtual DOM" to satisfy markdownlint MD041 (first-line H1).
-## Virtual DOM
+# Virtual DOM📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Virtual DOM | |
| # Virtual DOM |
🧰 Tools
🪛 LanguageTool
[grammar] ~1-~1: Use correct spacing
Context: ## Virtual DOM There are elements and components before...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🪛 markdownlint-cli2 (0.17.2)
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In docs/guide/virtual-dom.md around lines 1 to 1, the file uses a level-2
heading ("## Virtual DOM") which violates markdownlint rule MD041; change the
first-line heading to a top-level H1 by replacing "## Virtual DOM" with "#
Virtual DOM" (or alternatively disable MD041 for this file if the H1 requirement
is intentionally undesired).
| defrecord Effect :name :coord :args :method | ||
| ``` | ||
|
|
||
| `coord` means "coordinate" in Respo, it looks like `[] 0 1 3` or even `[] 0 0 0 :container 0 0 "|a"`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Clarify coord examples and meaning.
Make explicit that [] is the root cursor and coords are paths.
-`coord` means "coordinate" in Respo, it looks like `[] 0 1 3` or even `[] 0 0 0 :container 0 0 "|a"`.
+`coord` (“coordinate”) is a path from the root cursor `[]`, for example `[] 0 1 3` or `[] 0 0 0 :container 0 0 "|a"`.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| `coord` means "coordinate" in Respo, it looks like `[] 0 1 3` or even `[] 0 0 0 :container 0 0 "|a"`. | |
| `coord` (“coordinate”) is a path from the root cursor `[]`, for example `[] 0 1 3` or `[] 0 0 0 :container 0 0 "|a"`. |
🧰 Tools
🪛 LanguageTool
[grammar] ~13-~13: There might be a mistake here.
Context: ...thod ``` coord means "coordinate" in Respo, it looks like `[] 0 1 3` or even `[] 0 ...
(QB_NEW_EN_OTHER)
[grammar] ~13-~13: Use correct spacing
Context: ... or even [] 0 0 0 :container 0 0 "|a". If you define component like this: ```c...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
| You may have noticed that in `children` field it's a vector. | ||
| There is a `0` indicating it's the first child. | ||
| And yes internally that's the true representation of children. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Clarify children representation.
State explicitly that each child is stored as [index element].
-You may have noticed that in `children` field it's a vector.
-There is a `0` indicating it's the first child.
-And yes internally that's the true representation of children.
+In the `:children` field, each entry is a two-item vector `[index element]`. The leading `0` indicates “first child”. That is the internal representation.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| You may have noticed that in `children` field it's a vector. | |
| There is a `0` indicating it's the first child. | |
| And yes internally that's the true representation of children. | |
| In the `:children` field, each entry is a two-item vector `[index element]`. The leading `0` indicates “first child”. That is the internal representation. |
🧰 Tools
🪛 LanguageTool
[grammar] ~45-~45: Use articles correctly
Context: ...n []}]]} ``` You may have noticed that in children field it's a vector. There i...
(QB_NEW_EN_OTHER_ERROR_IDS_11)
[grammar] ~45-~45: There might be a mistake here.
Context: ...You may have noticed that in children field it's a vector. There is a 0 indicatin...
(QB_NEW_EN_OTHER)
[grammar] ~45-~45: There might be a mistake here.
Context: ... that in children field it's a vector. There is a 0 indicating it's the first...
(QB_NEW_EN)
[grammar] ~47-~47: There might be a problem here.
Context: ...0` indicating it's the first child. And yes internally that's the true representation of child...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~47-~47: Use correct spacing
Context: ...t's the true representation of children. As I told, virtual DOM is normal Calcit-...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/guide/virtual-dom.md around lines 45 to 47, the explanation of the
children vector is ambiguous; update the text to explicitly state that each
child is stored as a two-item array in the form [index element] (where index is
the child's numeric position and element is the child node), and adjust the
example sentence to show that the `0` is the index and the following entry is
the child element so readers understand the internal representation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review continued from previous batch...
| ## Respo API | ||
|
|
||
| ### User APIs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Promote to H1 and fix heading spacing
Use a top-level heading to satisfy MD041 and common docs conventions.
-## Respo API
+# Respo API📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Respo API | |
| ### User APIs | |
| # Respo API | |
| ### User APIs |
🧰 Tools
🪛 LanguageTool
[grammar] ~1-~1: Use correct spacing
Context: ## Respo API ### User APIs | Namespace | Func...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: ## Respo API ### User APIs | Namespace | Function ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🪛 markdownlint-cli2 (0.17.2)
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In docs/api.md around lines 1–3, the top heading should be promoted to H1 and
heading levels/spaces corrected: change "## Respo API" to "# Respo API", ensure
there is a single blank line after that H1, and demote "### User APIs" to "##
User APIs" so heading levels are hierarchical and spacing conforms to Markdown
linting.
| | `respo.core` | [`defcomp`](apis/defcomp.md) | | ||
| | | [`div`](apis/div.md) | | ||
| | | [`<>`](apis/expand-tag.md) | | ||
| | | [`defeffect`](apis/defeffect.md) | | ||
| | | [`create-element`](apis/create-element.md) | | ||
| | | [`render!`](apis/render_.md) | | ||
| | | [`clear-cache!`](apis/clear-cache_.md) | | ||
| | | [`realize-ssr!`](apis/realize-ssr_.md) | | ||
| | | [`list->`](apis/list-_.md) | | ||
| | | [`>>`](apis/pick-states.md) | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Fix broken/incorrect links in the User APIs table
Several link targets don’t match the added files and will 404.
-| | [`render!`](apis/render_.md) |
-| | [`clear-cache!`](apis/clear-cache_.md) |
-| | [`list->`](apis/list-_.md) |
+| | [`render!`](apis/render!.md) |
+| | [`clear-cache!`](apis/clear-cache!.md) |
+| | [`list->`](apis/list->.md) |Run to confirm targets exist:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
for f in docs/apis/render!.md docs/apis/clear-cache!.md docs/apis/list->.md; do
test -f "$f" || { echo "Missing: $f"; exit 1; }
done
rg -n "]\\(apis/" docs/api.mdLength of output: 129
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Check existence of API docs with special characters
for name in 'render!.md' 'clear-cache!.md' 'list->.md'; do
file="docs/apis/$name"
if [[ -f "$file" ]]; then
echo "Found: $file"
else
echo "Missing: $file"
fi
done
# List all API links in docs/api.md
rg -n '\]\(apis/' docs/api.md || trueLength of output: 2167
Update API table links to match actual filenames
In docs/api.md, the current links reference files with underscores instead of the real names and will 404. Replace:
-| [`render!`](apis/render_.md)
-| [`clear-cache!`](apis/clear-cache_.md)
-| [`list->`](apis/list-_.md)
+| [`render!`](apis/render!.md)
+| [`clear-cache!`](apis/clear-cache!.md)
+| [`list->`](apis/list->.md)Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In docs/api.md around lines 7-16, the table links point to filenames with
trailing underscores (e.g., apis/render_.md, apis/clear-cache_.md,
apis/realize-ssr_.md, apis/list-_.md) which don't exist; update each link to the
actual file name in the apis/ directory (or URL-encode special characters like
"!" if the real file contains them), replacing the underscore-suffixed targets
with the correct filenames, and then run the repo link checker or preview to
verify there are no 404s.
| Normally you don't need low level APIs, and the basic APIs are enough for building a apps. | ||
|
|
||
| I documented the APIs that can be useful. | ||
| It's possible to discover new features we have't noticed yet. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Tighten copy and grammar
Improve clarity and fix typos/articles.
-Normally you don't need low level APIs, and the basic APIs are enough for building a apps.
-
-I documented the APIs that can be useful.
-It's possible to discover new features we have't noticed yet.
+Normally you don’t need low-level APIs; the basic APIs are enough for building an app.
+
+Here are lower-level APIs that can be useful.
+It’s possible you’ll discover features we haven’t noticed yet.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Normally you don't need low level APIs, and the basic APIs are enough for building a apps. | |
| I documented the APIs that can be useful. | |
| It's possible to discover new features we have't noticed yet. | |
| Normally you don’t need low-level APIs; the basic APIs are enough for building an app. | |
| Here are lower-level APIs that can be useful. | |
| It’s possible you’ll discover features we haven’t noticed yet. |
🧰 Tools
🪛 LanguageTool
[grammar] ~23-~23: There might be a mistake here.
Context: ... level APIs Normally you don't need low level APIs, and the basic APIs are enoug...
(QB_NEW_EN_OTHER)
[grammar] ~23-~23: Use articles correctly
Context: ... the basic APIs are enough for building a apps. I documented the APIs that can b...
(QB_NEW_EN_OTHER_ERROR_IDS_11)
[grammar] ~23-~23: Use correct spacing
Context: ...sic APIs are enough for building a apps. I documented the APIs that can be useful...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~26-~26: There might be a mistake here.
Context: ...'s possible to discover new features we have't noticed yet. | Namespace ...
(QB_NEW_EN_OTHER)
[grammar] ~26-~26: Use correct spacing
Context: ...over new features we have't noticed yet. | Namespace | Function ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/api.md around lines 23–27, the copy contains grammatical errors and
awkward phrasing ("low level" should be "low-level", "a apps" -> "apps" or "an
app", "we have't" -> "we haven't"); tighten and clarify the sentences by using
correct articles and hyphenation, remove redundancy, and choose consistent
terminology (e.g., "basic APIs are sufficient for building applications" and "I
documented APIs that may be useful" or "The documented APIs may be useful");
update the lines to use proper punctuation and spelling and prefer
"applications" or "apps" consistently.
| | `respo.util.list` | [`map-val`](#map-val) | | ||
| | | [`map-with-idx`](#map-with-idx) | | ||
| | `respo.render.diff` | [`find-element-diffs`](apis/find-element-diffs.md) | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Broken intra-doc anchor: add section for map-val or change link
You link to #map-val but there’s no corresponding “map-val” section below.
Options:
- Add a “##### map-val” section under “APIs”, or
- Link to a dedicated page (if added), e.g.
(apis/map-val.md), or - Remove the link if intentionally undocumented.
🏁 Script executed:
#!/bin/bash
# Search for a map-val header in docs/api.md
rg -nP '^(#{1,6})\s*map-val\b' docs/api.md || echo "no section header for map-val found"Length of output: 125
Fix broken #map-val anchor in docs/api.md (lines 33–35)
The link to #map-val in the API table is broken—there’s no corresponding “map-val” section. Add a “##### map-val” section under “APIs” in docs/api.md, update the link to a dedicated page (e.g. apis/map-val.md), or remove the link if this API is intentionally undocumented.
🤖 Prompt for AI Agents
In docs/api.md around lines 33–35 the table links to `#map-val` which is
missing; add a new section header "##### map-val" under the "APIs" section in
docs/api.md (ensuring the header text creates the `#map-val` anchor), or create
a dedicated page at apis/map-val.md and update the table link to point to that
page (e.g. [`map-val`](apis/map-val.md)); if this API is intentionally
undocumented, remove the `#map-val` link from the table instead; ensure the
table link and the target header/file names match exactly.
| ### APIs | ||
|
|
||
| ##### map-with-idx | ||
|
|
||
| ```cirru | ||
| respo.util.list/map-with-idx identity ([] :a :b) | ||
| ; [] ([] 0 :a) ([] 1 :b) | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Minor formatting polish for the example
Add a brief lead-in sentence and fence result as a comment consistently.
-##### map-with-idx
-
-```cirru
-respo.util.list/map-with-idx identity ([] :a :b)
-; [] ([] 0 :a) ([] 1 :b)
-```
+##### map-with-idx
+
+```cirru
+; maps values with their indices
+respo.util.list/map-with-idx identity ([] :a :b)
+; => [] ([] 0 :a) ([] 1 :b)
+```🧰 Tools
🪛 LanguageTool
[grammar] ~40-~40: Use correct spacing
Context: ...is/patch-instance.md) | ### APIs ##### map-with-idx ```cirru respo.util.list/m...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~42-~42: Use correct spacing
Context: ...) | ### APIs ##### map-with-idx cirru respo.util.list/map-with-idx identity ([] :a :b) ; [] ([] 0 :a) ([] 1 :b)
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/api.md around lines 40 to 47, the example for map-with-idx needs a brief
lead-in sentence and a consistent result comment fence; add a short descriptive
comment line before the example (e.g., "maps values with their indices") and
change the result comment to include a leading arrow (e.g., "; => [] ([] 0 :a)
([] 1 :b)"), and ensure the code block fences remain intact around the cirru
snippet.
| A macro `respo.css/defstyle` has been added for add `<style>...</style>` referred with `:class-name`. It's less dynamic, which means you cannot pass parameters to styles in this way. It will insert into `<head>...</head>` a `<style>...</style>` element. It runs before `main!` and `reload!`. | ||
|
|
||
|  |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarify defstyle paragraph; fix wording.
-A macro `respo.css/defstyle` has been added for add `<style>...</style>` referred with `:class-name`. It's less dynamic, which means you cannot pass parameters to styles in this way. It will insert into `<head>...</head>` a `<style>...</style>` element. It runs before `main!` and `reload!`.
+The `respo.css/defstyle` macro adds a `<style>…</style>` referenced by `:class-name`. It is less dynamic (no parameters) and inserts into `<head>…</head>`. It runs before `main!` and `reload!`.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| A macro `respo.css/defstyle` has been added for add `<style>...</style>` referred with `:class-name`. It's less dynamic, which means you cannot pass parameters to styles in this way. It will insert into `<head>...</head>` a `<style>...</style>` element. It runs before `main!` and `reload!`. | |
|  | |
| The `respo.css/defstyle` macro adds a `<style>…</style>` referenced by `:class-name`. It is less dynamic (no parameters) and inserts into `<head>…</head>`. It runs before `main!` and `reload!`. | |
|  |
🧰 Tools
🪛 LanguageTool
[grammar] ~49-~49: There might be a mistake here.
Context: ...cro respo.css/defstyle has been added for add <style>...</style> referred with ...
(QB_NEW_EN_OTHER)
[grammar] ~49-~49: Use prepositions correctly
Context: ...been added for add <style>...</style> referred with :class-name. It's less dynamic, ...
(QB_NEW_EN_OTHER_ERROR_IDS_7)
[style] ~49-~49: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: .../head>a<style>...</style>element. It runs beforemain!andreload!`. ![]...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~49-~49: Use correct spacing
Context: ...t. It runs before main! and reload!.
define style: ```cirru defstyle style-i...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🪛 markdownlint-cli2 (0.17.2)
51-51: Images should have alternate text (alt text)
(MD045, no-alt-text)
🤖 Prompt for AI Agents
In docs/guide/styles.md around lines 49 to 51, the paragraph about the
`respo.css/defstyle` macro has awkward wording and unclear explanation; rewrite
it to read clearly: state that `respo.css/defstyle` is a macro to add a
<style>...</style> block to the document head and associate it with a class name
(e.g., via `:class-name`), note that it is less dynamic so you cannot pass
parameters to styles through it, and keep the operational details that it
inserts into `<head>` and runs before `main!` and `reload!`; replace “for add”
with “to add” and tidy grammar while preserving the intended meaning.
| define style: | ||
|
|
||
| ```cirru |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Capitalize and clarify.
-define style:
+Define a style:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| define style: | |
| ```cirru | |
| Define a style: | |
🧰 Tools
🪛 LanguageTool
[grammar] ~53-~53: Use correct spacing
Context: ...6d-b387-e4ab7cb120c5.png) define style: cirru defstyle style-input $ {} "\"$0" $ {} (:font-size |16px) :line-height |24px :padding "|0px 8px" :outline :none :min-width |300px :background-color $ hsl 0 0 94 :border :none $0 will be replace by a string of `classNa...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/guide/styles.md around lines 53 to 55, the fragment "define style:" must
be capitalized and clarified; replace it with a proper heading like "Define
Style" or "Define a Style" (title case), and follow it with a short clarifying
sentence that explains what the section will cover (e.g., what "style" refers to
and any expected syntax or purpose) so the heading is clear and self-contained.
| Internally, a definition of `respo.app.comp.task/style-done` generates className as `style-done__respo_app_comp_task`(with help of a new API `&get-calcit-running-mode`), so it's still unique across files and modules. During hot code swapping, the hashmap will be compared to previous hashmap to decide whether or not update. | ||
|
|
||
| Since it's not a GC-based solution, `<style>..</style>` created before hot code swapping remains in the DOM tree and will alway occupy memory. This solution is far from perfect, but it's supposed to cover current needs in Respo. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarity and grammar; spacing.
-Internally, a definition of `respo.app.comp.task/style-done` generates className as `style-done__respo_app_comp_task`(with help of a new API `&get-calcit-running-mode`), so it's still unique across files and modules. During hot code swapping, the hashmap will be compared to previous hashmap to decide whether or not update.
+Internally, `respo.app.comp.task/style-done` generates a class name like `style-done__respo_app_comp_task` (with `&get-calcit-running-mode`), ensuring cross-file uniqueness. During hot swapping, the new hashmap is compared to the previous one to decide whether to update.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Internally, a definition of `respo.app.comp.task/style-done` generates className as `style-done__respo_app_comp_task`(with help of a new API `&get-calcit-running-mode`), so it's still unique across files and modules. During hot code swapping, the hashmap will be compared to previous hashmap to decide whether or not update. | |
| Since it's not a GC-based solution, `<style>..</style>` created before hot code swapping remains in the DOM tree and will alway occupy memory. This solution is far from perfect, but it's supposed to cover current needs in Respo. | |
| Internally, `respo.app.comp.task/style-done` generates a class name like `style-done__respo_app_comp_task` (with `&get-calcit-running-mode`), ensuring cross-file uniqueness. During hot swapping, the new hashmap is compared to the previous one to decide whether to update. | |
| Since it's not a GC-based solution, `<style>..</style>` created before hot code swapping remains in the DOM tree and will alway occupy memory. This solution is far from perfect, but it's supposed to cover current needs in Respo. |
🧰 Tools
🪛 LanguageTool
[grammar] ~77-~77: There might be a problem here.
Context: ...task/style-donegenerates className asstyle-done__respo_app_comp_task(with help of a new API &get-calcit-running-...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~77-~77: There might be a mistake here.
Context: ... swapping, the hashmap will be compared to previous hashmap to decide whether or n...
(QB_NEW_EN)
[grammar] ~77-~77: Use prepositions correctly
Context: ...o previous hashmap to decide whether or not update. Since it's not a GC-based solu...
(QB_NEW_EN_OTHER_ERROR_IDS_7)
[grammar] ~77-~77: Use correct spacing
Context: ...hashmap to decide whether or not update. Since it's not a GC-based solution, `<st...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~79-~79: Make sure you are using the right part of speech
Context: ...apping remains in the DOM tree and will alway occupy memory. This solution is far fro...
(QB_NEW_EN_OTHER_ERROR_IDS_21)
[grammar] ~79-~79: Use correct spacing
Context: ...upposed to cover current needs in Respo. ### Node.js rendering During HTML rendering...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/guide/styles.md around lines 77 to 79, the text has grammar and spacing
issues: change "className as `style-done__respo_app_comp_task`(with help of a
new API `&get-calcit-running-mode`), so it's still unique" to include a space
before the parenthesis and use "its" instead of "it's" if indicating possession;
fix "will alway occupy memory" to "will always occupy memory"; rephrase the
second sentence for clarity (e.g., "During hot code swapping, the hashmap is
compared to the previous version to decide whether to update.") and normalize
punctuation/spacing around code spans so sentences read smoothly and
grammatically correct.
|
|
||
| Internally, a definition of `respo.app.comp.task/style-done` generates className as `style-done__respo_app_comp_task`(with help of a new API `&get-calcit-running-mode`), so it's still unique across files and modules. During hot code swapping, the hashmap will be compared to previous hashmap to decide whether or not update. | ||
|
|
||
| Since it's not a GC-based solution, `<style>..</style>` created before hot code swapping remains in the DOM tree and will alway occupy memory. This solution is far from perfect, but it's supposed to cover current needs in Respo. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Typo: “alway” → “always”.
-Since it's not a GC-based solution, `<style>..</style>` created before hot code swapping remains in the DOM tree and will alway occupy memory.
+Since it's not a GC-based solution, `<style>…</style>` created before hot swapping remains in the DOM and will always occupy memory.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Since it's not a GC-based solution, `<style>..</style>` created before hot code swapping remains in the DOM tree and will alway occupy memory. This solution is far from perfect, but it's supposed to cover current needs in Respo. | |
| Since it's not a GC-based solution, `<style>…</style>` created before hot swapping remains in the DOM and will always occupy memory. This solution is far from perfect, but it's supposed to cover current needs in Respo. |
🧰 Tools
🪛 LanguageTool
[grammar] ~79-~79: Make sure you are using the right part of speech
Context: ...apping remains in the DOM tree and will alway occupy memory. This solution is far fro...
(QB_NEW_EN_OTHER_ERROR_IDS_21)
[grammar] ~79-~79: Use correct spacing
Context: ...upposed to cover current needs in Respo. ### Node.js rendering During HTML rendering...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In docs/guide/styles.md around line 79, there is a typo: "alway" should be
corrected to "always"; update the sentence to read "...remains in the DOM tree
and will always occupy memory." preserving punctuation and surrounding wording.
|
|
||
| ### Node.js rendering | ||
|
|
||
| During HTML rendering in Node.js , styles are collected in a list in `respo.css/*style-list-in-nodejs`. It's an unstable design but you can get styles from it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Spacing after comma.
-During HTML rendering in Node.js , styles are collected in a list in `respo.css/*style-list-in-nodejs`. It's an unstable design but you can get styles from it.
+During HTML rendering in Node.js, styles are collected in `respo.css/*style-list-in-nodejs`. This is unstable but available.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| During HTML rendering in Node.js , styles are collected in a list in `respo.css/*style-list-in-nodejs`. It's an unstable design but you can get styles from it. | |
| During HTML rendering in Node.js, styles are collected in `respo.css/*style-list-in-nodejs`. This is unstable but available. |
🧰 Tools
🪛 LanguageTool
[grammar] ~83-~83: There might be a mistake here.
Context: ...dering During HTML rendering in Node.js , styles are collected in a list in `res...
(QB_NEW_EN_OTHER)
[grammar] ~83-~83: There might be a mistake here.
Context: ...style-list-in-nodejs`. It's an unstable design but you can get styles from it.
(QB_NEW_EN_OTHER)
[grammar] ~83-~83: There might be a mistake here.
Context: ...e design but you can get styles from it.
(QB_NEW_EN)
🤖 Prompt for AI Agents
In docs/guide/styles.md around line 83, there's an incorrect space before the
comma in "Node.js ,"; remove the extra space so the sentence reads "Node.js,
styles are collected..." (i.e., ensure no space before the comma and proper
spacing after it).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (3)
calcit.cirru (1)
3-3: Version bumped to 0.16.18 — verify repo-wide sync and avoid driftLooks good here. Please confirm all other versioned surfaces (package.json, compact.cirru, docs/badges) are aligned; past feedback suggested centralizing version management to prevent drift.
#!/bin/bash set -euo pipefail echo "Stale versions (expect none):" rg -nP '0\.16\.(16|17)\b' -S -g '!**/node_modules/**' -g '!**/dist/**' -g '!**/build/**' || true echo -e "\nCurrent version occurrences (expect ≥1):" rg -n '0\.16\.18\b' -S -g '!**/node_modules/**' -g '!**/dist/**' -g '!**/build/**' || true echo -e "\npackage.json version fields (expect 0.16.18):" fd -a package.json | xargs -I{} rg -nP '"version"\s*:\s*"([^"]+)"' {}compact.cirru (2)
3-3: Version bumped to 0.16.18 — verify consistency across manifests/docsEnsure every surfaced version (package.json, README, docs, release notes, CI publish scripts) also reflects 0.16.18.
#!/bin/bash # Show all version mentions rg -nP '0\.16\.\d+' -C2 # Confirm Cirru manifest version is 0.16.18 rg -nP '(:version\s+\|0\.16\.18)' -n compact.cirru # Find mismatches against the target version TARGET='0.16.18' rg -nP "(?<![0-9])0\.16\.(?!${TARGET#0.16.})\d+" -C2
725-727: Silence warning in production; improve wording
Gate the println behind a dev flag and fix grammar.- ~@ $ if (empty? body) - quasiquote $ println "\"WARNING:" ~effect-name "\"lack code for handling effects!" - , body + ~@ $ if (empty? body) + quasiquote $ when schema/dev? + println "\"WARNING:" ~effect-name "\"lacks handlers for effects; method is a no-op." + , body
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (2)
calcit.cirru(8 hunks)compact.cirru(5 hunks)
🔇 Additional comments (12)
calcit.cirru (5)
4923-4938: li wrapper redefined — ensure no duplicate defn remainsThis likely replaces an older entry; please confirm there’s exactly one li defn left (script in h5/h6 comment covers this).
5079-5094: ol wrapper — LGTMPattern matches existing element wrappers; no issues spotted.
5113-5128: p wrapper — LGTMConsistent signature and create-element usage.
5451-5466: strong wrapper — LGTMMatches conventions; no functional concerns.
4803-4836: Add tiny :doc strings for h5/h6 (and other wrappers) and verify compact.cirru exports
- calcit.cirru contains many defn occurrences (h5: 3566, h6: 3583, p: 9307, strong: 4213, ul: 4285, ol: 3841, li: 3685, hr: 3617).
- compact.cirru returned no matches — ensure these wrapper symbols are exported there and referenced in docs.
Apply for h5 (repeat for h6, p, strong, ul, ol, li):
- |h5 $ %{} :CodeEntry (:doc |) + |h5 $ %{} :CodeEntry (:doc "|Wrapper for <h5>.")compact.cirru (7)
770-776: Add h5/h6 wrappers — LGTM
779-781: Add hr wrapper — LGTM; matches self-closing handling
The HTML renderer’s self-closing set already includes "hr", so this aligns correctly.
815-817: Add ol wrapper — LGTM
821-823: Add p wrapper — LGTM
869-871: Add strong wrapper — LGTM
882-884: Add ul wrapper — LGTM
885-885: Core ns doc update — LGTM
| |hr $ %{} :CodeEntry (:doc |) | ||
| :code $ %{} :Expr (:at 1757831161799) (:by |rJoDgvdeG) | ||
| :data $ {} | ||
| |T $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |defn) | ||
| |b $ %{} :Leaf (:at 1757831163607) (:by |rJoDgvdeG) (:text |hr) | ||
| |h $ %{} :Expr (:at 1757831161799) (:by |rJoDgvdeG) | ||
| :data $ {} | ||
| |T $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |props) | ||
| |l $ %{} :Expr (:at 1757831161799) (:by |rJoDgvdeG) | ||
| :data $ {} | ||
| |T $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |create-element) | ||
| |b $ %{} :Leaf (:at 1757831170599) (:by |rJoDgvdeG) (:text |:hr) | ||
| |h $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |props) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
hr wrapper: correct void-element handling; add a clarifying docstring
Good to omit children. Add a brief doc to reduce confusion.
- |hr $ %{} :CodeEntry (:doc |)
+ |hr $ %{} :CodeEntry (:doc "|Wrapper for <hr> (void element, no children).")📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| |hr $ %{} :CodeEntry (:doc |) | |
| :code $ %{} :Expr (:at 1757831161799) (:by |rJoDgvdeG) | |
| :data $ {} | |
| |T $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |defn) | |
| |b $ %{} :Leaf (:at 1757831163607) (:by |rJoDgvdeG) (:text |hr) | |
| |h $ %{} :Expr (:at 1757831161799) (:by |rJoDgvdeG) | |
| :data $ {} | |
| |T $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |props) | |
| |l $ %{} :Expr (:at 1757831161799) (:by |rJoDgvdeG) | |
| :data $ {} | |
| |T $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |create-element) | |
| |b $ %{} :Leaf (:at 1757831170599) (:by |rJoDgvdeG) (:text |:hr) | |
| |h $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |props) | |
| |hr $ %{} :CodeEntry (:doc "|Wrapper for <hr> (void element, no children).") | |
| :code $ %{} :Expr (:at 1757831161799) (:by |rJoDgvdeG) | |
| :data $ {} | |
| |T $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |defn) | |
| |b $ %{} :Leaf (:at 1757831163607) (:by |rJoDgvdeG) (:text |hr) | |
| |h $ %{} :Expr (:at 1757831161799) (:by |rJoDgvdeG) | |
| :data $ {} | |
| |T $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |props) | |
| |l $ %{} :Expr (:at 1757831161799) (:by |rJoDgvdeG) | |
| :data $ {} | |
| |T $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |create-element) | |
| |b $ %{} :Leaf (:at 1757831170599) (:by |rJoDgvdeG) (:text |:hr) | |
| |h $ %{} :Leaf (:at 1757831161799) (:by |rJoDgvdeG) (:text |props) |
🤖 Prompt for AI Agents
In calcit.cirru around lines 4854 to 4866, add a brief docstring to the hr
wrapper explaining that "hr" is a void element and thus intentionally omits
children, and ensure the wrapper constructs the element without attaching any
child nodes; update the function header or comment immediately above the hr
wrapper to state this behavior succinctly so future readers won't attempt to
pass children.
| :code $ %{} :Expr (:at 1757844918427) (:by |rJoDgvdeG) | ||
| :data $ {} | ||
| |T $ %{} :Leaf (:at 1757844918427) (:by |rJoDgvdeG) (:text |defn) | ||
| |b $ %{} :Leaf (:at 1757844920189) (:by |rJoDgvdeG) (:text |ul) | ||
| |h $ %{} :Expr (:at 1757844918427) (:by |rJoDgvdeG) | ||
| :data $ {} | ||
| |T $ %{} :Leaf (:at 1757844918427) (:by |rJoDgvdeG) (:text |props) | ||
| |b $ %{} :Leaf (:at 1757844918427) (:by |rJoDgvdeG) (:text |&) | ||
| |h $ %{} :Leaf (:at 1757844918427) (:by |rJoDgvdeG) (:text |children) | ||
| |l $ %{} :Expr (:at 1757844918427) (:by |rJoDgvdeG) | ||
| :data $ {} | ||
| |T $ %{} :Leaf (:at 1757844918427) (:by |rJoDgvdeG) (:text |create-element) | ||
| |b $ %{} :Leaf (:at 1757844922438) (:by |rJoDgvdeG) (:text |:ul) | ||
| |h $ %{} :Leaf (:at 1757844918427) (:by |rJoDgvdeG) (:text |props) | ||
| |l $ %{} :Leaf (:at 1757844918427) (:by |rJoDgvdeG) (:text |&) | ||
| |o $ %{} :Leaf (:at 1757844918427) (:by |rJoDgvdeG) (:text |children) | ||
| :ns $ %{} :CodeEntry (:doc "|provide core APIs for Respo, many of them are elements. if expected element is not defined yet, use `create-element :tag-name ...` to use it dynamically.\n") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
ul wrapper added; consider updating ns doc text to mention new wrappers
Optional: expand the ns doc string to state that common tags (including h5/h6/hr/p/strong/ul/ol/li) have first-class wrappers in addition to dynamic create-element, and verify docs reference them.
🤖 Prompt for AI Agents
In calcit.cirru around lines 5523-5539, the namespace docstring still omits
mention of recently added element wrappers like ul (and other common tags);
update the ns docstring to explicitly mention that common tags (h5, h6, hr, p,
strong, ul, ol, li, etc.) now have first-class wrappers in addition to the
dynamic create-element API, and verify any docs or references in this file or
nearby documentation are updated to reference these wrappers; keep the wording
concise and consistent with existing doc style.
reused docs from guidebook
Summary by CodeRabbit