repo-map: findings from the last 8 rooms #11

Open
claudeBot wants to merge 2 commits from room-findings into main
Collaborator

The 8 rooms asked on Tuesday 3rd November all replied, with about 25 template findings between them (recorded on omp-matrix-bot#27). This PR takes them in one go.

It is built on #10, so merge #10 first; this PR then shows only its own commit.

repo-map.sh

  1. Sub-apps (escaperoom, TheoryBook). --app api, or APPS='api' in a room's copy, gives a subfolder its own stack. Its source files use that stack's symbol roots, its build folders are left out, and its routes and migrations print under ## api (laravel): .... Before this, Escape-Room's Laravel API under a Vite game was mapped as Node, so its migrations showed up as symbols and it had no routes section. Two rooms had each added their own setting for this.
  2. Chained routes (escaperoom). The static scan missed Route::middleware('auth')->get(...), on one line or split over two, so it showed wrong paths and missed editor.html.
  3. Binary files only counted (topick-web, booking). Images, fonts and other binary files are counted in the layout, not listed. Booking's 28 favicons now take one line.
  4. Empty models share a line (mis). 3 or more files in one folder with classes but no methods become one line, such as app/Models/: 90 files with no methods: .... That roughly halves the symbols of a data-sync repository like MISAPI.
  5. Moodle workspace (moodle). A folder of plugin clones without Moodle core, like the moodle room's /srv/omp/moodle, is detected and summarised plugin by plugin.
  6. Moodle web services and AMD (moodle). Only component_function names count as web services, so the words functions and array no longer appear. amd/src is a symbol root, and var name = function and name: function are read.
  7. .NET (topick-app). Test projects such as Topick.Hub.Tests/ are skipped. Target frameworks added under a Condition, such as iOS, are listed.
  8. Run time (gym). The map ends with how long it took, since the sandbox has no time command to measure it.
  9. mawk. Under mawk the layout recursed without end and filled the output. Debian's default awk is mawk, so this would have broken the script for any room on it. The Pi uses gawk, which is why no room hit it.

Already done: topick-web's --except-vendor was already passed to route:list. Booking's request to name the repository rather than the folder is in #10.

Templates and readme

  • Bot scratch folders (gym). /.inbox/ and /.matrix-uploads/ are added to every gitignore.add, since gym's showed up in its layout.
  • Clean-up needs no approval (booking, gym). The install recipes clone into .inbox/omp-templates, the room's scratch folder. The bot stopped the old rm -rf .omp-templates and asked James.
  • moodle/.gitattributes (moodle). This new file marks the agent files export-ignore, so a plugin zip built with git archive never puts them on the live site.
  • maui/CLAUDE.md (topick-app). It now covers an app at the repository root and has a row for side projects such as a hub.
  • maui/.ignore (topick-app). It lists packages.lock.json and generated *.Designer.cs and *.g.cs files instead of npm and composer lock files.
  • laravel/CLAUDE.md (topick-web). A new row for seeded content such as database/data/. It asks where content is changed rather than assuming, because llwybr changes its levels in the database.
  • Readme (postiz, escaperoom, moodle). It now says that a room with no repository skips repo-map, explains AGit for a repository that refuses branch pushes, and gives the moodle room's real workdir.

Not taken: the anonymous clone 404 that typingcoach reported. The same clone works from other rooms, so it's specific to that room.

Checks

  • node --test: 7 tests pass under both gawk and mawk. The 3 new tests cover the sub-app, chained routes, binary counts, grouped models, the Moodle workspace, web services, AMD functions and .NET. Before the mawk fix, every test failed under mawk.
  • Run against omp-matrix-bot (Node) in 0.24 seconds, and against whyterabbit in 0.13 seconds.
The 8 rooms asked on Tuesday 3rd November all replied, with about 25 template findings between them (recorded on omp-matrix-bot#27). This PR takes them in one go. **It is built on #10**, so merge #10 first; this PR then shows only its own commit. ## repo-map.sh 1. **Sub-apps (escaperoom, TheoryBook).** `--app api`, or `APPS='api'` in a room's copy, gives a subfolder its own stack. Its source files use that stack's symbol roots, its build folders are left out, and its routes and migrations print under `## api (laravel): ...`. Before this, Escape-Room's Laravel API under a Vite game was mapped as Node, so its migrations showed up as symbols and it had no routes section. Two rooms had each added their own setting for this. 2. **Chained routes (escaperoom).** The static scan missed `Route::middleware('auth')->get(...)`, on one line or split over two, so it showed wrong paths and missed `editor.html`. 3. **Binary files only counted (topick-web, booking).** Images, fonts and other binary files are counted in the layout, not listed. Booking's 28 favicons now take one line. 4. **Empty models share a line (mis).** 3 or more files in one folder with classes but no methods become one line, such as `app/Models/: 90 files with no methods: ...`. That roughly halves the symbols of a data-sync repository like MISAPI. 5. **Moodle workspace (moodle).** A folder of plugin clones without Moodle core, like the moodle room's `/srv/omp/moodle`, is detected and summarised plugin by plugin. 6. **Moodle web services and AMD (moodle).** Only `component_function` names count as web services, so the words `functions` and `array` no longer appear. `amd/src` is a symbol root, and `var name = function` and `name: function` are read. 7. **.NET (topick-app).** Test projects such as `Topick.Hub.Tests/` are skipped. Target frameworks added under a `Condition`, such as iOS, are listed. 8. **Run time (gym).** The map ends with how long it took, since the sandbox has no `time` command to measure it. 9. **mawk.** Under mawk the layout recursed without end and filled the output. Debian's default awk is mawk, so this would have broken the script for any room on it. The Pi uses gawk, which is why no room hit it. Already done: topick-web's `--except-vendor` was already passed to `route:list`. Booking's request to name the repository rather than the folder is in #10. ## Templates and readme - **Bot scratch folders (gym).** `/.inbox/` and `/.matrix-uploads/` are added to every `gitignore.add`, since gym's showed up in its layout. - **Clean-up needs no approval (booking, gym).** The install recipes clone into `.inbox/omp-templates`, the room's scratch folder. The bot stopped the old `rm -rf .omp-templates` and asked James. - **`moodle/.gitattributes` (moodle).** This new file marks the agent files `export-ignore`, so a plugin zip built with `git archive` never puts them on the live site. - **`maui/CLAUDE.md` (topick-app).** It now covers an app at the repository root and has a row for side projects such as a hub. - **`maui/.ignore` (topick-app).** It lists `packages.lock.json` and generated `*.Designer.cs` and `*.g.cs` files instead of npm and composer lock files. - **`laravel/CLAUDE.md` (topick-web).** A new row for seeded content such as `database/data/`. It asks where content is changed rather than assuming, because llwybr changes its levels in the database. - **Readme (postiz, escaperoom, moodle).** It now says that a room with no repository skips repo-map, explains AGit for a repository that refuses branch pushes, and gives the moodle room's real workdir. Not taken: the anonymous clone 404 that typingcoach reported. The same clone works from other rooms, so it's specific to that room. ## Checks - `node --test`: 7 tests pass under both gawk and mawk. The 3 new tests cover the sub-app, chained routes, binary counts, grouped models, the Moodle workspace, web services, AMD functions and .NET. Before the mawk fix, every test failed under mawk. - Run against omp-matrix-bot (Node) in 0.24 seconds, and against whyterabbit in 0.13 seconds.
The faster CI guide gains Fix 3 (run each commit once), the docker command
on ubuntu-latest, one image for a PHP version matrix, a note on flaky tests,
and TutorialVideos' results. repo-map.sh titles a worktree with the
repository name and keeps group prefixes in the static Laravel route scan.
Sub-apps get their own stack with --app, a Moodle workspace of plugin
clones is detected, binary files are only counted in the layout, files
with classes but no methods share a line, chained Laravel routes are
found, Moodle web services and AMD functions read properly, .NET test
projects and conditional target frameworks are handled, and the layout
no longer recurses without end under mawk. The install recipe clones
into .inbox/ so the clean-up needs no approval.
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin room-findings:room-findings
git switch room-findings

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff room-findings
git switch room-findings
git rebase main
git switch main
git merge --ff-only room-findings
git switch room-findings
git rebase main
git switch main
git merge --no-ff room-findings
git switch main
git merge --squash room-findings
git switch main
git merge --ff-only room-findings
git switch main
git merge room-findings
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
James/omp-templates!11
No description provided.