-
Notifications
You must be signed in to change notification settings - Fork 13
fix: filter card style #48
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
base: main
Are you sure you want to change the base?
Conversation
WalkthroughAdds a new Featureform solutions doc. Updates global styles and adds a post list wrapper class. Tweaks Checkbox alignment and label styles. Modifies HomeBanner to use site data, adjusts heading styles, and replaces the logo image with a direct image. Changes HomeContent Card titles to JSX nodes. Changes
Sequence Diagram(s)Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Poem
✨ 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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
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: 7
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/en/solutions/How_to_Install_and_use_Featureform.md (1)
1-773: Fix lint and formatting in docs/en/solutions/How_to_Install_and_use_Featureform.md
- Add language identifiers to all code fences (e.g.,
bash,yaml, ```python).- Remove trailing colons from intermediate headings (e.g., “Error when executing apply:”).
- Replace all “*” list markers with “-” for consistency.
- Ensure list items are indented at most 2 spaces.
🧹 Nitpick comments (11)
styles/index.css (2)
57-59: Prefer theme var for background to preserve dark mode/themingHard-coding rgb may clash with theme. Use the theme bg variable with a fallback.
-body { - background-color: rgb(247, 249, 252); -} +body { + background-color: var(--rp-c-bg, rgb(247, 249, 252)); +}
61-63: Scope looks good; use rem and keep trailing semicolon for consistencyMinor polish: use rem to respect root scaling and add a trailing semicolon.
-.post-list .rp-text-2xl { - font-size: 16px -} +.post-list .rp-text-2xl { + font-size: 1rem; /* 16px */ +}theme/components/HomeBanner/index.tsx (1)
1-1: Remove debug log and unused useSite hook; update import path
In theme/components/HomeBanner/index.tsx, replace the mixed import and drop the debug statements:-import { useI18n, usePageData, useSite } from "@rspress/runtime"; +import { useI18n, usePageData } from "@rspress/core/runtime"; … - const siteData = useSite(); - console.log(pageData, siteData); + // removed debug log and unused useSitedocs/en/solutions/How_to_Install_and_use_Featureform.md (8)
122-126: Tighten phrasing: “API interfaces” → “APIs”; “HTTP API interfaces” → “HTTP APIs”.Reduces tautology and improves clarity.
Apply this diff:
- - Provides gRPC API interfaces + - Provides gRPC APIs - - Provides HTTP API interfaces to access metadata services + - Provides HTTP APIs to access metadata services - - Converts Metadata Service's gRPC interfaces to HTTP interfaces + - Converts Metadata Service's gRPC APIs to HTTP APIsAlso applies to: 164-167
179-191: Add languages to fenced code blocks (markdownlint MD040).Annotate blocks as text/bash/yaml/python for proper rendering and linting.
Apply representative diffs (repeat for all unlabeled fences):
-``` +```text User → Dashboard ↓ Ingress Controller (Nginx) @@ -``` +``` -``` +```text Applying Run: amazed_volhard @@ -``` +``` -``` +```text Features: [array([25.])] , Label: [False] @@ -``` +``` -``` +```text Customer Result: [319.0] -``` +``` -``` +```text "UNKNOWN:Error received from peer {grpc_message:"resource SOURCE_VARIANT xxxx (xxx) has changed. Please use a new variant.", grpc_status:13}" -``` +``` -``` +```text "UNKNOWN:Error received from peer {grpc_message:"resource not found. LABEL_VARIANT xxxx (xxx) err: Key Not Found: LABEL_VARIANT__xxxxx__xxxx", grpc_status:5}" -``` +``` -``` +```text transformation failed to complete: job failed while running ..... -``` +``` -``` +```text ....create table error: unknown command `HEXISTS` ..... -``` +``` -``` +```text Featureform cannot connect to the provider during health check: (REDIS_ONLINE - client_initialization) dial tcp ...... -``` +``` -``` +```text Featureform cannot connect to the provider during health check: (POSTGRES_OFFLINE - ping) dial tcp: -``` +``` -``` +```text Featureform cannot connect to the provider during health check: (POSTGRES_OFFLINE - ping) pq: pg_hba.conf rejects connection .... -``` +```Also applies to: 594-616, 665-674, 704-707, 719-725, 727-733, 735-741, 743-749, 751-757, 759-765, 767-773
718-718: Remove trailing colons from headings (markdownlint MD026).Keeps headings clean and linter-happy.
Apply this diff pattern on each heading:
-### 1. Error when executing apply: +### 1. Error when executing applyAlso applies to: 726-726, 734-734, 742-742, 750-750, 758-758, 766-766
300-302: Normalize list indentation/style (markdownlint MD007/MD004).Use “- ” consistently and 2-space continuation under list items.
I can push a formatting patch across these ranges if you want me to run markdownlint and auto-fix.
Also applies to: 402-406, 413-417, 723-724, 731-732, 739-740, 747-748, 755-756, 763-764
344-349: Access guidance: add NodePort example for non-LB clusters.A one-liner showing how to get NodePort improves UX.
Apply this diff:
This `Service` type is `LoadBalancer`. If there is no `LoadBalancer` controller in the environment to provide external IP, you can access it through `node IP` plus its `NodePort`. +```bash +# Example: find NodePort +kubectl -n <ns> get svc application-name-ingress-nginx-controller -o jsonpath='{.spec.ports[?(@.port==80)].nodePort}{"\n"}' +```
455-463: Variant guidance: add a concrete variant pattern to avoid collisions.Readers benefit from a deterministic scheme (e.g., date or git short SHA).
Apply this diff:
- **FEATUREFORM_VARIANT**: Since Featureform adopts an immutable API without providing delete and update interfaces, to re-execute, modify this value to a new one, then re-execute `source setup-env.sh`, otherwise errors may occur + - **FEATUREFORM_VARIANT**: Featureform APIs are immutable. To re-run safely, set a new variant (e.g., `demo-$(date +%Y%m%d%H%M)` or `demo-<git-short-sha>`) and `source setup-env.sh` again.
344-360: Call out SDK TLS limitation and production alternative.You note client cert verification on ingress blocks SDK. Add a production-safe note (mutual TLS or internal LB).
Proposed addition after Line 358:
+In production, prefer one of: +- Terminate TLS at an internal LoadBalancer and restrict access by network policy. +- Expose a dedicated SDK endpoint with mTLS disabled but OAuth/OpenID auth enabled. +- Use a private ingress with IP allowlists.
100-116: Link stability: prefer reference-style links for external docs.Helps centralize URLs and avoid drift.
I can convert these to reference links at the bottom if you’d like.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ Files ignored due to path filters (1)
docs/public/180.pngis excluded by!**/*.png
📒 Files selected for processing (6)
docs/en/solutions/How_to_Install_and_use_Featureform.md(1 hunks)styles/index.css(1 hunks)theme/components/Checkbox/index.tsx(4 hunks)theme/components/HomeBanner/index.tsx(3 hunks)theme/components/HomeContent/index.tsx(2 hunks)theme/components/PostList/index.tsx(2 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/en/solutions/How_to_Install_and_use_Featureform.md
[grammar] ~47-~47: There might be a mistake here.
Context: ...key or index for the data. For example: - Customer: User ID, Customer ID, etc. ...
(QB_NEW_EN)
[grammar] ~56-~56: There might be a mistake here.
Context: ... Values**: Input data for model training - Label Values: Target values that the m...
(QB_NEW_EN)
[style] ~65-~65: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ictions - Labels are the targets we want to predict - Training Sets organize fe...
(REP_WANT_TO_VB)
[grammar] ~104-~104: There might be a mistake here.
Context: ...effectively: ### Official Documentation - Main Documentation: [https://docs.feat...
(QB_NEW_EN)
[grammar] ~105-~105: There might be a mistake here.
Context: ...tation**: https://docs.featureform.com/ - Comprehensive introduction to Featurefor...
(QB_NEW_EN)
[grammar] ~106-~106: There might be a mistake here.
Context: ...eatureform's core concepts and workflows - Includes architecture design, deployment...
(QB_NEW_EN)
[grammar] ~107-~107: There might be a mistake here.
Context: ...n, deployment guides, and best practices - Provides common use cases and example co...
(QB_NEW_EN)
[grammar] ~110-~110: There might be a mistake here.
Context: ...ses and example code ### SDK References - Python SDK: [https://sdk.featureform.c...
(QB_NEW_EN)
[grammar] ~111-~111: There might be a mistake here.
Context: ...hon SDK**: https://sdk.featureform.com/ - Complete Python API reference documentat...
(QB_NEW_EN)
[grammar] ~112-~112: There might be a mistake here.
Context: ...plete Python API reference documentation - Supports local mode and hosted instances...
(QB_NEW_EN)
[grammar] ~113-~113: There might be a mistake here.
Context: ...Supports local mode and hosted instances - Includes detailed descriptions of all op...
(QB_NEW_EN)
[grammar] ~122-~122: There might be a mistake here.
Context: ...nts: ### Core Services 1. API Server - Provides gRPC API interfaces - Acts a...
(QB_NEW_EN)
[style] ~123-~123: This phrase is redundant (‘I’ stands for ‘interfaces’). Use simply “APIs”.
Context: ...s 1. API Server - Provides gRPC API interfaces - Acts as a gRPC gateway, forwarding...
(ACRONYM_TAUTOLOGY)
[grammar] ~123-~123: There might be a mistake here.
Context: ...rver** - Provides gRPC API interfaces - Acts as a gRPC gateway, forwarding reque...
(QB_NEW_EN)
[grammar] ~124-~124: There might be a mistake here.
Context: ...s to Metadata Service and Feature Server - Provides unified resource management and...
(QB_NEW_EN)
[grammar] ~127-~127: There might be a mistake here.
Context: ... interfaces externally 2. Coordinator - Monitors task changes in etcd - Coord...
(QB_NEW_EN)
[grammar] ~128-~128: There might be a mistake here.
Context: ...tor** - Monitors task changes in etcd - Coordinates task scheduling and executio...
(QB_NEW_EN)
[grammar] ~129-~129: There might be a mistake here.
Context: ...oordinates task scheduling and execution - Manages various Runners to execute speci...
(QB_NEW_EN)
[grammar] ~132-~132: There might be a mistake here.
Context: ...cute specific tasks 3. Feature Server - Provides feature services (online featur...
(QB_NEW_EN)
[grammar] ~133-~133: There might be a mistake here.
Context: ...feature queries, batch feature services) - Provides training data services (trainin...
(QB_NEW_EN)
[grammar] ~134-~134: There might be a mistake here.
Context: ... (training set data, column information) - Provides vector search functionality (su...
(QB_NEW_EN)
[grammar] ~144-~144: There might be a mistake here.
Context: ...n resources ### Data Storage 1. etcd - Stores configuration information and clu...
(QB_NEW_EN)
[grammar] ~145-~145: There might be a mistake here.
Context: ...figuration information and cluster state - Provides distributed locks and coordinat...
(QB_NEW_EN)
[grammar] ~148-~148: There might be a mistake here.
Context: ... coordination services 2. Meilisearch - Provides search functionality for featur...
(QB_NEW_EN)
[grammar] ~149-~149: There might be a mistake here.
Context: ... functionality for features and metadata - Supports full-text search and fuzzy matc...
(QB_NEW_EN)
[grammar] ~150-~150: There might be a mistake here.
Context: ...orts full-text search and fuzzy matching - Data source: Metadata Service automatica...
(QB_NEW_EN)
[grammar] ~155-~155: There might be a mistake here.
Context: ...oring and Observability 1. Prometheus - Collects system metrics and performance ...
(QB_NEW_EN)
[grammar] ~159-~159: There might be a mistake here.
Context: ...ry support for Dashboard 2. Dashboard - Provides web interface for viewing syste...
(QB_NEW_EN)
[grammar] ~160-~160: There might be a mistake here.
Context: ... web interface for viewing system status - Displays feature statistics, performance...
(QB_NEW_EN)
[grammar] ~161-~161: There might be a mistake here.
Context: ...rmance metrics, and resource information - Pure frontend page, only provides read-o...
(QB_NEW_EN)
[grammar] ~164-~164: There might be a mistake here.
Context: ...g functionality 3. Metadata Dashboard - Provides HTTP API interfaces to access m...
(QB_NEW_EN)
[style] ~165-~165: This phrase is redundant (‘I’ stands for ‘interfaces’). Use simply “APIs”.
Context: ...Metadata Dashboard** - Provides HTTP API interfaces to access metadata services - Conver...
(ACRONYM_TAUTOLOGY)
[grammar] ~165-~165: There might be a mistake here.
Context: ...I interfaces to access metadata services - Converts Metadata Service's gRPC interfa...
(QB_NEW_EN)
[grammar] ~166-~166: There might be a mistake here.
Context: ...etadata services - Converts Metadata Service's gRPC interfaces to HTTP interfaces -...
(QB_NEW_EN)
[grammar] ~166-~166: There might be a mistake here.
Context: ...ice's gRPC interfaces to HTTP interfaces - Provides resource queries, search, and l...
(QB_NEW_EN)
[grammar] ~167-~167: There might be a mistake here.
Context: ...ent functionality for Dashboard frontend - Supports source data preview and file st...
(QB_NEW_EN)
[grammar] ~172-~172: There might be a mistake here.
Context: ... Access 1. Ingress Controller (Nginx) - Manages external traffic routing and loa...
(QB_NEW_EN)
[grammar] ~299-~299: There might be a mistake here.
Context: ...o obtain the Image Repository Address: - In the Administrator view, check the `...
(QB_NEW_EN)
[grammar] ~348-~348: There might be a mistake here.
Context: ...ancer` controller in the environment to provide external IP, you can access it through ...
(QB_NEW_EN)
[grammar] ~358-~358: There might be a mistake here.
Context: ...API access addresses, since ingress has enabled client certificate verification mechani...
(QB_NEW_EN)
[grammar] ~376-~376: There might be a mistake here.
Context: ...s environment variables used by the demo - [load-data.py](/featureform/quickstart/lo...
(QB_NEW_EN)
[grammar] ~377-~377: There might be a mistake here.
Context: ...ing to PostgreSQL and executing data.sql - [data.sql](/featureform/quickstart/data.s...
(QB_NEW_EN)
[grammar] ~378-~378: There might be a mistake here.
Context: ... database dump file containing demo data - [definitions.py](/featureform/quickstart/...
(QB_NEW_EN)
[grammar] ~379-~379: There might be a mistake here.
Context: ...) - Featureform resource definition file - [training.py](/featureform/quickstart/tra...
(QB_NEW_EN)
[grammar] ~380-~380: There might be a mistake here.
Context: ...uickstart/training.py) - Training script - [serving.py](/featureform/quickstart/serv...
(QB_NEW_EN)
[grammar] ~381-~381: There might be a mistake here.
Context: .../quickstart/serving.py) - Serving script - [requirements.txt](/featureform/quickstar...
(QB_NEW_EN)
[grammar] ~412-~412: There might be a mistake here.
Context: ...encies Python Version Requirements: - Supports Python 3.7 - 3.10 ```bash pip ...
(QB_NEW_EN)
[grammar] ~471-~471: There might be a mistake here.
Context: ...thon load-data.py ``` This script will: - Connect to the PostgreSQL database - Cre...
(QB_NEW_EN)
[grammar] ~621-~621: There might be a mistake here.
Context: ...emonstrates Featureform's core concepts:** - Providers: Data source connectors (Pos...
(QB_NEW_EN)
[grammar] ~622-~622: There might be a mistake here.
Context: ...ta source connectors (PostgreSQL, Redis) - Entities: Business objects (Customer) ...
(QB_NEW_EN)
[grammar] ~623-~623: There might be a mistake here.
Context: ...Entities*: Business objects (Customer) - Features: Inputs for machine learning ...
(QB_NEW_EN)
[grammar] ~624-~624: There might be a mistake here.
Context: ...chine learning models (avg_transactions) - Labels: Training targets for models (f...
(QB_NEW_EN)
[grammar] ~625-~625: There might be a mistake here.
Context: ...Training targets for models (fraudulent) - Training Sets: Combinations of feature...
(QB_NEW_EN)
[grammar] ~626-~626: There might be a mistake here.
Context: ...s**: Combinations of features and labels - Variants: Support for multi-version ma...
(QB_NEW_EN)
[grammar] ~658-~658: There might be a mistake here.
Context: ...eak ``` Script Function Description: - Connect to Featureform service - Get the...
(QB_NEW_EN)
[grammar] ~698-~698: There might be a mistake here.
Context: ...at) ``` Script Function Description: - Connect to Featureform service - Query t...
(QB_NEW_EN)
[grammar] ~709-~709: There might be a mistake here.
Context: ...19.0] ``` Real Application Scenarios: - When new customers make transactions, qu...
(QB_NEW_EN)
[grammar] ~747-~747: There might be a mistake here.
Context: ...`` - Cause: Redis is incorrectly using Sentinel access address - *Solution...
(QB_NEW_EN)
[grammar] ~748-~748: There might be a mistake here.
Context: ...ntinel access address - Solution: Replace Redis instance or update Redis access a...
(QB_NEW_EN)
[grammar] ~748-~748: There might be a mistake here.
Context: ...Solution: Replace Redis instance or update Redis access address ### 5. After appl...
(QB_NEW_EN)
🪛 markdownlint-cli2 (0.17.2)
docs/en/solutions/How_to_Install_and_use_Featureform.md
179-179: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
300-300: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
402-402: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
402-402: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
413-413: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
594-594: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
665-665: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
704-704: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
718-718: Trailing punctuation in heading
Punctuation: ':'
(MD026, no-trailing-punctuation)
719-719: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
723-723: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
724-724: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
726-726: Trailing punctuation in heading
Punctuation: ':'
(MD026, no-trailing-punctuation)
727-727: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
731-731: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
732-732: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
734-734: Trailing punctuation in heading
Punctuation: ':'
(MD026, no-trailing-punctuation)
735-735: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
739-739: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
740-740: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
742-742: Trailing punctuation in heading
Punctuation: ':'
(MD026, no-trailing-punctuation)
743-743: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
747-747: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
748-748: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
750-750: Trailing punctuation in heading
Punctuation: ':'
(MD026, no-trailing-punctuation)
751-751: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
755-755: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
756-756: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
758-758: Trailing punctuation in heading
Punctuation: ':'
(MD026, no-trailing-punctuation)
759-759: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
763-763: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
764-764: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
766-766: Trailing punctuation in heading
Punctuation: ':'
(MD026, no-trailing-punctuation)
767-767: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
771-771: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
772-772: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
🔇 Additional comments (4)
theme/components/PostList/index.tsx (1)
30-30: LGTM: dedicated wrapper classThe scoped wrapper enables targeted styling without leaking globally.
theme/components/HomeContent/index.tsx (1)
159-160: Provide @rspress/core/theme version
Please share which version of @rspress/core/theme you’re using (e.g. the entry from your package.json) so we can confirm that Card.title is typed as React.ReactNode. Until then, we can’t be sure the prop will accept a JSX element without type or runtime errors.theme/components/Checkbox/index.tsx (1)
31-33: LGTM: top-aligning checkbox + labelImproves alignment for multi-line labels.
docs/en/solutions/How_to_Install_and_use_Featureform.md (1)
1-8: Use the correct front-matter key for product versions
RenameProductsVersion:to the theme’s expected key (e.g.productsVersionorproductVersions) to match other docs—confirm with the site generator’s front-matter spec.
| Use the violet command to publish to the platform repository: | ||
| ```bash | ||
| violet push --platform-address=platform-access-address --platform-username=platform-admin --platform-password=platform-admin-password featureform.amd64.v0.12.1-1.tgz | ||
| ``` | ||
|
|
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.
Don’t put credentials on the command line; prefer env vars or an interactive prompt.
CLI args leak via shell history and process lists. Use env and a prompt for the password.
Apply this diff:
-```bash
-violet push --platform-address=platform-access-address --platform-username=platform-admin --platform-password=platform-admin-password featureform.amd64.v0.12.1-1.tgz
-```
+```bash
+export ALAUDA_ADDR="platform-access-address"
+export ALAUDA_USER="platform-admin"
+read -s -p "Platform password: " ALAUDA_PASS; echo
+violet push --platform-address="$ALAUDA_ADDR" --platform-username="$ALAUDA_USER" --platform-password="$ALAUDA_PASS" featureform.amd64.v0.12.1-1.tgz
+unset ALAUDA_PASS
+```🤖 Prompt for AI Agents
In docs/en/solutions/How_to_Install_and_use_Featureform.md around lines 199-203,
the example command passes platform credentials on the command line (which can
leak via shell history/process lists); update the docs to show using environment
variables and an interactive password prompt instead: set address and username
into exported env vars, read the password securely into a temporary env var via
a silent prompt, run the violet push command referencing those env vars, then
unset the password variable to avoid leaving credentials in the environment.
| 1. The path specified in spec.local.path must exist and be set to 777 permissions, for example: | ||
| ```bash | ||
| mkdir -p /var/lib/etcd-1 | ||
| chmod 777 /var/lib/etcd-1 | ||
| ``` |
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.
Avoid suggesting chmod 777 on host paths; use least-privilege perms and ownership.
777 is a security risk and can break compliance. Recommend 750 (or 700) and set ownership to the etcd run user (e.g., 1001 for Bitnami).
Apply this diff:
```bash
mkdir -p /var/lib/etcd-1
- chmod 777 /var/lib/etcd-1
+ chmod 750 /var/lib/etcd-1
+ # Optional: align ownership with the etcd container user/group (adjust UID/GID as needed)
+ chown -R 1001:1001 /var/lib/etcd-1
```🤖 Prompt for AI Agents
In docs/en/solutions/How_to_Install_and_use_Featureform.md around lines 248-252,
avoid recommending chmod 777 on host paths; change the guidance to use
least-privilege permissions (e.g., chmod 750 or 700) and set ownership to the
etcd run user/group—update the example to create the directory, set restrictive
permissions, and add an optional chown to the etcd container UID/GID (e.g.,
1001:1001) so the host path is secure and accessible by the container user.
| * Create `Redis` in `standalone` mode: | ||
|
|
||
| 1. When creating a `Redis` instance, select `Redis Sentinel` for `Architecture`. | ||
|
|
||
| 2. After setting all parameters, switch to `YAML` mode, change `spec.arch` to `standalone`, then click the `Create` button. | ||
|
|
||
| 3. After creation, switch to the `Alauda Container Platform` view and look for the `Service` named `rfr-<Redis instance name>-read-write`, which is the access address for this Redis instance. | ||
|
|
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
Clarify Redis “Sentinel” vs “standalone” steps (they contradict).
Step 1 says select Sentinel; Step 2 immediately changes to standalone. This confuses readers.
Apply this rewrite:
- * Create `Redis` in `standalone` mode:
- 1. When creating a `Redis` instance, select `Redis Sentinel` for `Architecture`.
- 2. After setting all parameters, switch to `YAML` mode, change `spec.arch` to `standalone`, then click the `Create` button.
+ * Create `Redis` in `standalone` mode:
+ 1. If the UI offers an `Architecture` selector, choose `standalone`.
+ If it does not, create the instance and then switch to `YAML` mode to set:
+ `spec.arch: standalone`.
+ 2. Save/apply the change to recreate the instance as standalone.
3. After creation, switch to the `Alauda Container Platform` view and look for the `Service` named `rfr-<Redis instance name>-read-write`, which is the access address for this Redis instance.📝 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.
| * Create `Redis` in `standalone` mode: | |
| 1. When creating a `Redis` instance, select `Redis Sentinel` for `Architecture`. | |
| 2. After setting all parameters, switch to `YAML` mode, change `spec.arch` to `standalone`, then click the `Create` button. | |
| 3. After creation, switch to the `Alauda Container Platform` view and look for the `Service` named `rfr-<Redis instance name>-read-write`, which is the access address for this Redis instance. | |
| * Create `Redis` in `standalone` mode: | |
| 1. If the UI offers an `Architecture` selector, choose `standalone`. | |
| If it does not, create the instance and then switch to `YAML` mode to set: | |
| `spec.arch: standalone`. | |
| 2. Save/apply the change to recreate the instance as standalone. | |
| 3. After creation, switch to the `Alauda Container Platform` view and look for the `Service` named `rfr-<Redis instance name>-read-write`, which is the access address for this Redis instance. |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
402-402: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
402-402: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
|
|
||
| **Python Version Requirements:** | ||
| - Supports Python 3.7 - 3.10 | ||
|
|
||
| ```bash |
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
Re-verify Python version support (3.7–3.10 may be stale).
Upstream SDK support may have moved (EOL for 3.7; possible 3.11/3.12 support).
🌐 Web query:
What Python versions are currently supported by the Featureform Python SDK?
💡 Result:
The Featureform Python SDK supports Python 3.9 through 3.12. [1][2]
Sources:
- PyPI package metadata showing "Python 3.9-3.12". [1]
- Featureform SDK installation docs (requirements list). [2]
Update Python version requirements to match SDK (3.9–3.12). Change the entry in docs/en/solutions/How_to_Install_and_use_Featureform.md (lines 411–415) from “3.7 – 3.10” to “3.9 – 3.12.”
🧰 Tools
🪛 LanguageTool
[grammar] ~412-~412: There might be a mistake here.
Context: ...encies Python Version Requirements: - Supports Python 3.7 - 3.10 ```bash pip ...
(QB_NEW_EN)
🪛 markdownlint-cli2 (0.17.2)
413-413: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
🤖 Prompt for AI Agents
In docs/en/solutions/How_to_Install_and_use_Featureform.md around lines 411 to
415, update the "Python Version Requirements" entry from "Supports Python 3.7 -
3.10" to "Supports Python 3.9 - 3.12" so the docs match the SDK; edit the text
on those lines to replace the version range accordingly and ensure any
surrounding wording/formatting remains intact.
| # Connect to Featureform server and apply all definitions | ||
| client = ff.Client(host=os.getenv("FEATUREFORM_HOST", "localhost:7878"), insecure=True) | ||
| client.apply() | ||
| ``` |
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
Default to secure client; gate “insecure” by env for local only.
Avoid documenting insecure=True as default. Make it opt-in via env.
Apply this diff:
-# Connect to Featureform server and apply all definitions
-client = ff.Client(host=os.getenv("FEATUREFORM_HOST", "localhost:7878"), insecure=True)
+# Connect to Featureform server and apply all definitions
+# Set FF_INSECURE=true only for local/dev if the server lacks TLS.
+client = ff.Client(
+ host=os.getenv("FEATUREFORM_HOST", "localhost:7878"),
+ insecure=os.getenv("FF_INSECURE", "false").lower() == "true"
+)📝 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.
| # Connect to Featureform server and apply all definitions | |
| client = ff.Client(host=os.getenv("FEATUREFORM_HOST", "localhost:7878"), insecure=True) | |
| client.apply() | |
| ``` | |
| # Connect to Featureform server and apply all definitions | |
| # Set FF_INSECURE=true only for local/dev if the server lacks TLS. | |
| client = ff.Client( | |
| host=os.getenv("FEATUREFORM_HOST", "localhost:7878"), | |
| insecure=os.getenv("FF_INSECURE", "false").lower() == "true" | |
| ) | |
| client.apply() |
🤖 Prompt for AI Agents
In docs/en/solutions/How_to_Install_and_use_Featureform.md around lines 586 to
589, the example currently enables an insecure client by default; change the
example to create a secure client by default and make insecure mode opt‑in via
an environment variable (e.g. FEATUREFORM_INSECURE) so local use can opt into
insecure transport. Update the snippet to read the env var, parse it as a
boolean (treat "1","true","yes" as true), pass insecure only when that env var
is true, and add a short comment noting insecure mode is for local/dev only.
| text-l | ||
| ${disabled ? "text-gray-500" : "text-black-700"} | ||
| transition-colors duration-200 |
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
Fix invalid Tailwind classes
- text-l is not a valid Tailwind size (use text-base or text-lg).
- text-black-700 is invalid; use text-gray-700 or text-neutral-700.
- text-l
- ${disabled ? "text-gray-500" : "text-black-700"}
+ text-base
+ ${disabled ? "text-gray-500" : "text-gray-700"}📝 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.
| text-l | |
| ${disabled ? "text-gray-500" : "text-black-700"} | |
| transition-colors duration-200 | |
| text-base | |
| ${disabled ? "text-gray-500" : "text-gray-700"} | |
| transition-colors duration-200 |
🤖 Prompt for AI Agents
In theme/components/Checkbox/index.tsx around lines 64 to 66, the class string
uses invalid Tailwind utilities ("text-l" and "text-black-700"); replace
"text-l" with a valid size (e.g., "text-base" or "text-lg") and replace
"text-black-700" with a valid color (e.g., "text-gray-700" or
"text-neutral-700"), keeping the disabled conditional logic intact so the final
class concatenation still yields the disabled color when appropriate.
| </p> | ||
| </div> | ||
| {/* <img width={240} src={logo}></img> */} | ||
| <img width={180} src={`${pageData.siteData.base}180.png`}></img> |
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
Harden base path join and add alt text
Avoid double/missing slashes and add alt for accessibility.
- <img width={180} src={`${pageData.siteData.base}180.png`}></img>
+ <img
+ width={180}
+ alt="Knowledge logo"
+ src={`${pageData.siteData.base.replace(/\\/?$/, "/")}180.png`}
+ />📝 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.
| <img width={180} src={`${pageData.siteData.base}180.png`}></img> | |
| <img | |
| width={180} | |
| alt="Knowledge logo" | |
| src={`${pageData.siteData.base.replace(/\/?$/, "/")}180.png`} | |
| /> |
🤖 Prompt for AI Agents
In theme/components/HomeBanner/index.tsx around line 36, the img src is built by
naive string concatenation which can produce double or missing slashes
(src={`${pageData.siteData.base}180.png`}) and the img lacks an alt attribute;
update the src construction to robustly join the base path and filename (e.g.,
trim trailing slash from base or ensure exactly one slash between base and
"180.png", or use a URL/utility join function) and add a descriptive alt
attribute for accessibility (e.g., alt="Site logo" or appropriate text); also
make the img element self-closing and preserve the width prop.
Summary by CodeRabbit
Documentation
Style