Skip to content

A package indexer with BETA 997 snapshots, a scanner that reads more of each package, and a shorter Documentation Development section - #227

Merged
KubaO merged 33 commits into
twinbasic:mainfrom
KubaO:staging
Oct 11, 2026
Merged

KubaO merged 33 commits into
twinbasic:mainfrom
KubaO:staging

Conversation

@KubaO

@KubaO KubaO commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator

Adds the package indexer, which lists the documentation work a new twinBASIC build leaves, makes the scanner it shares with the symbol index read more of each package, and edits the Documentation Development pages down by about 13%.

  • indexer (new, indexer/twin-index.mjs): sync reads the built-in and default packages from the local twinBASIC install (--release downloads them instead) and the contributed ones from TWINSERV, and writes an api.json for each into a git store. analyze compares those with the committed snapshots and lists the public symbols to create, update and remove. derive writes builder/package-api.json and replaces scripts/build_package_api.mjs.
  • snapshots: the BETA 997 api.json of the 14 packages the reference documents are committed (3.2 MB). The landing pages gain indexed_from: beta-x-0997 and, where the folder is not the package, package_name.
  • scanner: scripts/lib/twin-api.mjs is the only one now, and the indexer's own lexer and extractor are retired. It reads signatures, Inherits and Implements lists, colon-joined statements, and a line of only [Name] in an Enum body as a value (94 enums gain values). The branches of an #If become one member with a condition on each signature (api.json format 3).
  • docs: Documentation Development has long paragraphs split and the rationale and history a contributor does not act on cut. Build and Generation Tools gains the indexer's entry, the toolchain diagram's boxes link to their tools, and every link in the Tools map has a tooltip. IDE takes nav_order: 9 and Documentation Development moves to the end. An Enum member takes no attribute in BETA 1005: Enum says so, Hidden no longer lists one as a target, and Open's Encoding constants are described as Consts of TextEncodingConstants.
  • tests: test/indexer.test.mjs (94 tests) is a new test.bat and CI gate. check_symbol_index and check_twin_parsers pin the scanner's fixes, check_cli the indexer's command line, and indexer/ joins the lint, format and regex-safety gates.

twin-index needs a twinBASIC install (or a download with --release), so it stays outside every gate and CI. Its tests and command-line cases need neither and run in test.bat.

KubaO added 30 commits October 11, 2026 15:06
…bout 13% shorter): long paragraphs split, rationale and history a contributor does not act on cut, plainer register; Tools-Toolchain-Tests says Tools.md owns the gate lists; a stray tab in Tools-IDE's %TEMP%\tb-ports
… end; the toolchain diagram's boxes link to their tool entries and sections; every link in the Tools map has a tooltip saying what the tool or group does; a linked diagram's boxes carry tooltips (Authoring.md, WIP.md)
…s a member, not an attribute (BETA 1005); the scanner moves to scripts/lib/census-scan.mjs and check_twin_parsers pins it
…s one, Enum says a bracket group on its own line is a member and an inline attribute TB5182, Open's Encoding constants are Consts of TextEncodingConstants; the sweep and census notes give the reason
…od: code, manifests and plans, without its snapshots
…port and variable removed, an exponential attribute-line regex made unambiguous, tooling-folder lists name it
…xit codes, exit 2 on refusal), recorded in cli-cases; survey_tooling covers indexer/
…install by default (--ide, TB_IDE), --release for the GitHub release; the manifest records source and build; TWINSERV skipped when only those are named
…, accessors, aliases and the project name; keyword-named fields, one-line procedures and modifier-named enum values read right (slD3D's 364 problems gone)
…Y exported) in package-files.mjs, which replaces twinpack-parser.mjs
… differ and analyze on it; lexer, extractor, json-emitter and the markdown emitter retired; VB6 files with no VB_Name named by their file
…mpiler reads it, not the next line's attribute; 94 enums gain values (the [_] LongPtr shim, GridCellEffectEnum, ReportSizeConstants, DWORD)
…reprocessing, package files, api.json model, differ); gate counts read twenty-five
…er/.packages/manifests); a package is current by what the store holds (sources, api.json format and version), so a pulled or filtered-sync manifest cannot hide a stale one; snapshots written only when their bytes differ
…s; a section's landing page ties it to its packages (package_name, indexed_from) through lib/doc-pages.mjs
…s (3.2 MB); their 13 landing pages carry package_name where the folder is not the package, and indexed_from: beta-x-0997
… an audit) and says when it has none; the store keeps long paths on and line endings off
…reads them as a variable name and refuses the Sub after them, TB5182); the other words it refuses everywhere are noted
…, [Hidden(False)], modifier-named and initialised fields, Type-body brackets, result types before Overrides/Handles clauses, #If branches as alternatives, unmodified Declare is Public; pinned in check_symbol_index; the BETA 997 snapshots of VB, cefPackage145 and WebView2Package regenerated
…ry character past ASCII, a type-declaration character ends a name and gives its type; pinned in check_symbol_index, check_twin_parsers and the indexer tests
…n escape, not as the raw character the editor tool wrote
… member with a signature and a condition for each; twin-api records the condition and block of every member; the differ reads the merged form; BETA 997 snapshots regenerated
…ide each api.json, keeps Settings, and sync indexes a package again from its stored sources, with no download, when the fingerprint differs
…; --all takes every package in the store, --package and --packages still name any; recorded in cli-cases
…y on the Build and Generation page and a box in the Tools map; Authoring and the indexer test's entry link to it
…dexer/PLAN-pipeline.md and PLAN-auto-sync.md; the README points at it and at the Tools entry, TWINSERV-protocol.md says the indexer uses two endpoints
KubaO added 3 commits October 11, 2026 18:10
…r; the per-symbol workflow says how to find the symbols to write with analyze
… reads, byte-identical to scripts/build_package_api.mjs, which is retired; the docs, the Tools map and the CLI cases follow
…Constants gets the 17 values the scanner now reads
@KubaO
KubaO merged commit 05c79a6 into twinbasic:main Oct 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant