Skip to content

Commit a71c797

Browse files
committed
ticket sync
1 parent 490ea7c commit a71c797

File tree

7 files changed

+318
-7
lines changed

7 files changed

+318
-7
lines changed

.github/.sync-metadata.json

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"lastSync": "2025-11-13T13:40:58.458Z",
3-
"releasesLastFetched": "2025-11-13T13:40:58.461Z",
2+
"lastSync": "2025-11-14T15:18:33.969Z",
3+
"releasesLastFetched": "2025-11-14T15:18:33.979Z",
44
"pushFailures": [],
55
"issues": {
66
"3789": {
@@ -6265,8 +6265,8 @@
62656265
"state": "OPEN",
62666266
"path": "/Users/Shared/github/neomjs/neo/.github/ISSUE/issue-7756.md",
62676267
"closedAt": null,
6268-
"updatedAt": "2025-11-12T14:12:09Z",
6269-
"contentHash": "656a49e4f060dc6f95bf1e8822f1daff6a6db216c29b42f62b5400a04caa6951"
6268+
"updatedAt": "2025-11-14T09:15:12Z",
6269+
"contentHash": "8b3fc488721f1838ea30740801783a201daf70d0c46c49d6dc1543277160f7a3"
62706270
},
62716271
"7757": {
62726272
"state": "CLOSED",
@@ -6323,6 +6323,41 @@
63236323
"closedAt": "2025-11-13T10:51:52Z",
63246324
"updatedAt": "2025-11-13T10:51:52Z",
63256325
"contentHash": "67f664cfd7f3c74e548fac407743ea56b2663dd9bf9669a8dd9d6e9eb1d43d74"
6326+
},
6327+
"7769": {
6328+
"state": "CLOSED",
6329+
"path": "/Users/Shared/github/neomjs/neo/.github/ISSUE/issue-7769.md",
6330+
"closedAt": "2025-11-13T22:12:31Z",
6331+
"updatedAt": "2025-11-13T22:12:31Z",
6332+
"contentHash": "7c2a6b46c1de475ba4a5c585d2f8fa397aa7bceb8e86767906145c9cd0c33219"
6333+
},
6334+
"7770": {
6335+
"state": "CLOSED",
6336+
"path": "/Users/Shared/github/neomjs/neo/.github/ISSUE/issue-7770.md",
6337+
"closedAt": "2025-11-13T22:17:28Z",
6338+
"updatedAt": "2025-11-13T22:17:28Z",
6339+
"contentHash": "7575cb7f05c4aa45189926563059610b8588fc7e6455a4f2a4bb9e030d188f9e"
6340+
},
6341+
"7771": {
6342+
"state": "CLOSED",
6343+
"path": "/Users/Shared/github/neomjs/neo/.github/ISSUE/issue-7771.md",
6344+
"closedAt": "2025-11-13T22:54:46Z",
6345+
"updatedAt": "2025-11-13T22:54:46Z",
6346+
"contentHash": "262498b1110113a15db6536f3fe79d8eff910724095bfdf166b5fb885766bd7d"
6347+
},
6348+
"7772": {
6349+
"state": "CLOSED",
6350+
"path": "/Users/Shared/github/neomjs/neo/.github/ISSUE/issue-7772.md",
6351+
"closedAt": "2025-11-14T11:41:20Z",
6352+
"updatedAt": "2025-11-14T11:41:20Z",
6353+
"contentHash": "59a12299ce0880d4942ee5509f3f8935c1306bcec067997dbbd7f758dcb1d13c"
6354+
},
6355+
"7773": {
6356+
"state": "CLOSED",
6357+
"path": "/Users/Shared/github/neomjs/neo/.github/ISSUE/issue-7773.md",
6358+
"closedAt": "2025-11-14T15:01:57Z",
6359+
"updatedAt": "2025-11-14T15:01:57Z",
6360+
"contentHash": "41b089e9c0e49db562fd044c6e66f3bafd89cc9f2e5cb2b29cf8658886d2650c"
63266361
}
63276362
},
63286363
"releases": {

.github/ISSUE/issue-7756.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ state: OPEN
55
labels:
66
- enhancement
77
- ai
8-
assignees: []
8+
assignees:
9+
- Mahita07
910
createdAt: '2025-11-12T14:12:09Z'
10-
updatedAt: '2025-11-12T14:12:09Z'
11+
updatedAt: '2025-11-14T09:15:12Z'
1112
githubUrl: 'https://github.com/neomjs/neo/issues/7756'
1213
author: tobiu
13-
commentsCount: 0
14+
commentsCount: 2
1415
parentIssue: null
1516
subIssues: []
1617
subIssuesCompleted: 0
@@ -27,8 +28,19 @@ To improve the quality of pull request reviews, agents should be required to rea
2728
2. The new description should explicitly state that the agent must read the related ticket(s) before creating a review comment.
2829
3. The description should guide the agent to look for linked issues in the PR body.
2930

31+
## Comments
32+
33+
### @Mahita07 - 2025-11-14 06:28
34+
35+
@tobiu could you please assign this ticket to me ?
36+
37+
### @tobiu - 2025-11-14 09:15
38+
39+
Yes, I can. This ticket is trivial (just adding a comment) into the yaml file, but it might be a good starting point to try out how the 3 MCP servers have evolved. Make sure to update your fork first, and in case you have not done it already, I recommend to read the v11 blog post.
40+
3041
## Activity Log
3142

3243
- 2025-11-12 @tobiu added the `enhancement` label
3344
- 2025-11-12 @tobiu added the `ai` label
45+
- 2025-11-14 @tobiu assigned to @Mahita07
3446

.github/ISSUE/issue-7769.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
id: 7769
3+
title: Enhance SEO file generation to include all examples
4+
state: CLOSED
5+
labels:
6+
- enhancement
7+
- ai
8+
assignees:
9+
- tobiu
10+
createdAt: '2025-11-13T21:33:49Z'
11+
updatedAt: '2025-11-13T22:12:31Z'
12+
githubUrl: 'https://github.com/neomjs/neo/issues/7769'
13+
author: tobiu
14+
commentsCount: 0
15+
parentIssue: null
16+
subIssues: []
17+
subIssuesCompleted: 0
18+
subIssuesTotal: 0
19+
blockedBy: []
20+
blocking: []
21+
closedAt: '2025-11-13T22:12:31Z'
22+
---
23+
# Enhance SEO file generation to include all examples
24+
25+
### Description
26+
27+
The current `buildScripts/generateSeoFiles.mjs` script generates a sitemap and `llms.txt` that cover the main application routes and the "learn" section. However, it omits the numerous examples available in the repository, which are a critical resource for users and for providing context to LLMs.
28+
29+
This epic is to enhance the script to automatically discover and include all relevant examples by scanning the `apps/` and `examples/` directories.
30+
31+
### Acceptance Criteria
32+
33+
1. **File-based Discovery:** The script must recursively scan the `apps/` and `examples/` directories to find all `index.html` files, treating each as a discoverable example.
34+
2. **URL Generation:** The path to each discovered `index.html` should be converted into a relative URL.
35+
3. **Sitemap Integration:** All discovered example URLs must be included in the generated `dist/sitemap.xml`.
36+
4. **llms.txt Integration:** All discovered example URLs must be included in the generated `apps/portal/llms.txt`. A descriptive name should be generated from the file path for each example.
37+
5. **Exclusions**: The file-based discovery should not include examples from `node_modules` or other irrelevant directories.
38+
39+
### Implementation Suggestions
40+
41+
1. **Create `collectExampleRoutes()`:** Create a new function within `buildScripts/generateSeoFiles.mjs` named `collectExampleRoutes`. This function will encapsulate the logic for finding all example routes.
42+
2. **Integrate into `collectAllRoutes()`:** Modify the existing `collectAllRoutes` function to call `collectExampleRoutes` and merge its results with the top-level and content routes.
43+
3. **File Scanning:** Use a glob pattern like `{apps,examples}/**/index.html` to find all example entry points. For each file found, create a route object.
44+
4. **Update `getLlmsTxt`:** The `getLlmsTxt` function will need to be updated to handle the new example routes, possibly creating a new "Examples" section in the output.
45+
46+
## Activity Log
47+
48+
- 2025-11-13 @tobiu added the `enhancement` label
49+
- 2025-11-13 @tobiu added the `epic` label
50+
- 2025-11-13 @tobiu added the `ai` label
51+
- 2025-11-13 @tobiu assigned to @tobiu
52+
- 2025-11-13 @tobiu removed the `epic` label
53+
- 2025-11-13 @tobiu referenced in commit `24d8cbb` - "Enhance SEO file generation to include all examples #7769"
54+
- 2025-11-13 @tobiu closed this issue
55+

.github/ISSUE/issue-7770.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
id: 7770
3+
title: 'feat(seo): Use directory last modified date for examples in sitemap'
4+
state: CLOSED
5+
labels:
6+
- enhancement
7+
- ai
8+
assignees:
9+
- tobiu
10+
createdAt: '2025-11-13T22:13:41Z'
11+
updatedAt: '2025-11-13T22:17:28Z'
12+
githubUrl: 'https://github.com/neomjs/neo/issues/7770'
13+
author: tobiu
14+
commentsCount: 0
15+
parentIssue: null
16+
subIssues: []
17+
subIssuesCompleted: 0
18+
subIssuesTotal: 0
19+
blockedBy: []
20+
blocking: []
21+
closedAt: '2025-11-13T22:17:28Z'
22+
---
23+
# feat(seo): Use directory last modified date for examples in sitemap
24+
25+
### Description
26+
27+
The current `getSitemapXml` function in `buildScripts/generateSeoFiles.mjs` determines the `<lastmod>` date for an example by checking the git history of its `index.html` file only.
28+
29+
This is inaccurate because changes to other files within an example's directory (e.g., JavaScript, CSS, or resource files) do not update the `<lastmod>` date in the sitemap.
30+
31+
### Desired Behavior
32+
33+
The `<lastmod>` date for an example in `sitemap.xml` should reflect the last commit that modified *any* file within that example's directory.
34+
35+
### Implementation Suggestion
36+
37+
In `buildScripts/generateSeoFiles.mjs`, the `getSitemapXml` function should be modified. When collecting file paths to pass to `getGitLastModifiedBatch`, if a route is an example, it should pass the path to the example's parent directory (`path.dirname(filePath)`) instead of the path to the `index.html` file itself.
38+
39+
This will cause `git log` to find the most recent commit affecting any file in that directory, providing a more accurate timestamp.
40+
41+
## Activity Log
42+
43+
- 2025-11-13 @tobiu added the `enhancement` label
44+
- 2025-11-13 @tobiu added the `ai` label
45+
- 2025-11-13 @tobiu assigned to @tobiu
46+
- 2025-11-13 @tobiu referenced in commit `5a53e56` - "feat(seo): Use directory last modified date for examples in sitemap #7770"
47+
- 2025-11-13 @tobiu closed this issue
48+

.github/ISSUE/issue-7771.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
id: 7771
3+
title: 'docs(llms.txt): Enhance description for environment URLs'
4+
state: CLOSED
5+
labels:
6+
- documentation
7+
- ai
8+
assignees:
9+
- tobiu
10+
createdAt: '2025-11-13T22:52:43Z'
11+
updatedAt: '2025-11-13T22:54:46Z'
12+
githubUrl: 'https://github.com/neomjs/neo/issues/7771'
13+
author: tobiu
14+
commentsCount: 0
15+
parentIssue: null
16+
subIssues: []
17+
subIssuesCompleted: 0
18+
subIssuesTotal: 0
19+
blockedBy: []
20+
blocking: []
21+
closedAt: '2025-11-13T22:54:46Z'
22+
---
23+
# docs(llms.txt): Enhance description for environment URLs
24+
25+
### Description
26+
27+
The `llms.txt` file provides content for LLMs, and it currently lists only the zero-builds development mode URLs for applications and examples. However, Neo.mjs applications and examples are deployed across four distinct environments (development mode, `dist/development`, `dist/esm`, and `dist/production`), all serving identical functionality through different code delivery methods.
28+
29+
To provide better context for LLMs and clarify the canonical URL strategy, the introductory description within `llms.txt` needs to be enhanced.
30+
31+
### Goal
32+
33+
Update the introductory description in `apps/portal/llms.txt` to:
34+
1. Explain that Neo.mjs applications and examples are available in four equivalent environments.
35+
2. Clarify that the URLs listed in `llms.txt` are specifically the development mode (zero-builds) versions.
36+
3. Provide instructions on how to access other environment versions (e.g., by prefixing the path with `/dist/production/`).
37+
4. Include a specific example for the Portal app, showing its various environment URLs and the root domain mapping.
38+
39+
### Implementation Status
40+
41+
The necessary changes to the `getLlmsTxt` function in `buildScripts/generateSeoFiles.mjs` to update this description have already been implemented. This ticket serves to track the completion and verification of this documentation enhancement.
42+
43+
## Activity Log
44+
45+
- 2025-11-13 @tobiu added the `documentation` label
46+
- 2025-11-13 @tobiu added the `ai` label
47+
- 2025-11-13 @tobiu assigned to @tobiu
48+
- 2025-11-13 @tobiu referenced in commit `bcaf2d9` - "docs(llms.txt): Enhance description for environment URLs #7771"
49+
- 2025-11-13 @tobiu closed this issue
50+

.github/ISSUE/issue-7772.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
id: 7772
3+
title: Refactor SEO metadata handling in Portal ViewportController
4+
state: CLOSED
5+
labels:
6+
- enhancement
7+
- ai
8+
assignees:
9+
- tobiu
10+
createdAt: '2025-11-14T10:51:56Z'
11+
updatedAt: '2025-11-14T11:41:20Z'
12+
githubUrl: 'https://github.com/neomjs/neo/issues/7772'
13+
author: tobiu
14+
commentsCount: 0
15+
parentIssue: null
16+
subIssues: []
17+
subIssuesCompleted: 0
18+
subIssuesTotal: 0
19+
blockedBy: []
20+
blocking: []
21+
closedAt: '2025-11-14T11:41:20Z'
22+
---
23+
# Refactor SEO metadata handling in Portal ViewportController
24+
25+
### Summary
26+
27+
The current implementation in `Portal.view.ViewportController` stores SEO metadata in a static `routeMetadata` property directly within the controller. This couples the controller tightly with static data and is not a scalable or maintainable approach.
28+
29+
This task proposes refactoring this logic to follow best practices by separating data, service logic, and view control.
30+
31+
### Proposed Architecture
32+
33+
1. **Move Data to JSON File:**
34+
* The static SEO metadata will be moved from `ViewportController.mjs` to a new JSON file: `apps/portal/resources/data/seo.json`.
35+
36+
2. **Create a Singleton SEO Service:**
37+
* A new singleton service class will be created at `apps/portal/service/Seo.mjs`.
38+
* This service will extend `Neo.core.Base`.
39+
* In its `initAsync()` method, it will use the native `fetch()` API to load the `seo.json` file. This simulates fetching data from a real-world API endpoint.
40+
* The fetched data will be cached internally within the service.
41+
* It will expose a public method, such as `getMetadata(route)`, to provide the SEO data for a given route.
42+
43+
3. **Update ViewportController:**
44+
* The `Portal.view.ViewportController` will be updated to use the new service.
45+
* It will import the `Seo` service.
46+
* The static `routeMetadata` property will be removed.
47+
* The `onHashChange` method will be modified to:
48+
* Ensure the `Seo` service is ready (e.g., `await Portal.service.Seo.ready()`).
49+
* Call `Portal.service.Seo.getMetadata(route)` to retrieve the SEO data.
50+
* Update the document head as it does now.
51+
52+
### Acceptance Criteria
53+
54+
* The `routeMetadata` static property is removed from `Portal.view.ViewportController`.
55+
* A new file `apps/portal/resources/data/seo.json` exists and contains the SEO metadata.
56+
* A new singleton class `apps/portal/service/Seo.mjs` exists and correctly fetches and serves the SEO data.
57+
* `Portal.view.ViewportController` successfully uses the new service to update document head metadata on route changes.
58+
* The application's SEO functionality remains unchanged from a user's perspective.
59+
60+
## Activity Log
61+
62+
- 2025-11-14 @tobiu added the `enhancement` label
63+
- 2025-11-14 @tobiu added the `ai` label
64+
- 2025-11-14 @tobiu assigned to @tobiu
65+
- 2025-11-14 @tobiu referenced in commit `2f9dbc6` - "Refactor SEO metadata handling in Portal ViewportController #7772"
66+
- 2025-11-14 @tobiu closed this issue
67+

.github/ISSUE/issue-7773.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
id: 7773
3+
title: Enhance Router to provide `capturedRoute` in handler parameters
4+
state: CLOSED
5+
labels:
6+
- enhancement
7+
- ai
8+
assignees:
9+
- tobiu
10+
createdAt: '2025-11-14T14:25:09Z'
11+
updatedAt: '2025-11-14T15:01:57Z'
12+
githubUrl: 'https://github.com/neomjs/neo/issues/7773'
13+
author: tobiu
14+
commentsCount: 0
15+
parentIssue: null
16+
subIssues: []
17+
subIssuesCompleted: 0
18+
subIssuesTotal: 0
19+
blockedBy: []
20+
blocking: []
21+
closedAt: '2025-11-14T15:01:57Z'
22+
---
23+
# Enhance Router to provide `capturedRoute` in handler parameters
24+
25+
The `onHashChange` method in `src/controller/Base.mjs` should be enhanced to provide more context to route handlers (`handler`, `preHandler`, `defaultRoute`).
26+
27+
Currently, handlers receive `(params, value, oldValue)`. The `value` object, which comes from `HashHistory`, contains information about the hash change. This `value` object should be enhanced to include a `capturedRoute` property, which would be the string of the route pattern that was matched.
28+
29+
**Acceptance Criteria:**
30+
31+
1. When a specific route is matched, the `value` object passed to its `preHandler` (if any) and `handler` should contain a `capturedRoute` property with the matching route key (e.g., `/users/{userId}`).
32+
2. When no specific route is matched and a `defaultRoute` is configured, the `value` object passed to the default handler should contain `capturedRoute: 'default'`.
33+
3. When no route is matched and no `defaultRoute` is configured, the `value` object passed to `onNoRouteFound` should contain `capturedRoute: null`.
34+
35+
This will allow handlers to have more context about which route pattern triggered them, which can be useful for analytics, logging, or dynamic behavior.
36+
37+
## Activity Log
38+
39+
- 2025-11-14 @tobiu added the `enhancement` label
40+
- 2025-11-14 @tobiu added the `ai` label
41+
- 2025-11-14 @tobiu assigned to @tobiu
42+
- 2025-11-14 @tobiu referenced in commit `a1d3f9c` - "Enhance Router to provide capturedRoute in handler parameters #7773"
43+
- 2025-11-14 @tobiu closed this issue
44+

0 commit comments

Comments
 (0)