Implement form/report design stream extraction#6
Merged
Conversation
- Extract shared MSysAccessStorage infrastructure into storage.rs from vba.rs - Add form.rs library module with list_forms(), read_form_stream(), read_form_type_info() - Parse DirData to map form/report names to storage indices - Parse TypeInfo stream (magic 0xACCDEAF7) to extract control names and type codes - Add CLI form subcommand with list, dump, and controls sub-commands - Add FormNotFound and InvalidFormData error variants to FileError - Add encoding_rs dependency for Shift-JIS decoding in TypeInfo - Update CLI docs (cli.md, cli.ja.md) and add form-design.ja.md research notes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Record property entry format (prop_id + type + data) with fixed/variable length variants - Add known property ID mapping (RecordSource, ControlSource, Filter, etc.) - Document overall Blob layout (header → form-level → binary data → per-control blocks) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Blob binary parser to form.rs (form-level + per-control properties) - Add public types: BlobValue, BlobProperty, ControlProperties, FormProperties - Add `form props` CLI subcommand - Add 12 synthetic binary unit tests + 1 integration test - Add documentation to cli.md / cli.ja.md - Document known limitations, prop_id mapping, and type support in form-design.ja.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Correct OnClick (0x007E), OnDblClick (0x00E0), OnMouseDown (0x006B), etc. - Add OnKeyUp, OnMouseUp, OnMouseMove, OnGotFocus, OnLostFocus, OnEnter, OnExit - Update prop_id mapping tables in docs/form-design.ja.md - Add formPropTest.accdb test database (F_Table0, F_Table1, jp_フォーム_2, F_Buttons) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add 12 library tests: empty form, RecordSource/Filter, ControlSource, calculated fields, Format, Japanese form, events (all 12 types) - Add 8 CLI integration tests: form list, form props patterns - All quality checks pass (94.34% coverage) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add form section (list, dump, controls, props) to SKILL.md (EN/JA) - Add form design inspection workflow pattern Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add control_type_name() with 31 type code mappings based on analysis of all 81 forms/reports in IKP database - Fix TypeInfo-Blob matching: use name-based lookup instead of array index (pre-existing mismatch bug) - Update form controls and form props CLI output to show type names (unknown codes fall back to 0xXXXX) - Add type code mapping table to docs/form-design.ja.md - Update output examples in cli.md, cli.ja.md, SKILL.md, SKILL.ja.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add 4 unit tests for control_type_name(): form controls, report controls, unknown codes, and Label variants - Add index-based fallback when TypeInfo-Blob name matching fails Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Default to Select when ATTR_TYPE row is absent in MSysQueries, instead of silently dropping the query - Skip ~sq_ prefixed embedded queries (auto-generated by Access for form/report RowSource and RecordSource) - Add ACE format query tests using queryTestV2007.accdb - Add regression test for formPropTest.accdb (ATTR_TYPE missing) - Add docs/msysqueries.ja.md documenting MSysQueries internals, attribute constants, embedded query naming conventions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Convert all plaintext tables to Markdown table syntax across docs - form-design.ja.md: merge duplicate prop_id tables, remove SaveAsText and prior art sections Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Jet3, ACE12, and ACE14 tests for prop - Add Jet3, ACE12, ACE14, and ACE17 tests for tables - Add Jet3 and ACE14 tests for queries - Add non-encrypted ACE12 tests for vba - Add ACE17 test for ver - Add ACE14 test for schema - Add ACE14 test for form Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Verify Japanese table names, column names, data values, query names, and DDL identifier quoting across tables, schema, export, queries, and prop commands - Use formPropTest.accdb Japanese content (jp_テーブル2, 商品名, jp_クエリ_02, etc.) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lity - Add Japanese string tests to catalog, table, data, query, prop, and ddl modules using formPropTest.accdb (jp_テーブル2, 商品名, etc.) - Strengthen existing read_queries_form_prop_test with query name and SQL content verification for jp_クエリ_02 - Fix false-positive risks in cli_export (unwrap_or → expect), cli_form (is_empty → len >= 2), cli_schema (overly broad assertion) - Remove duplicate tests: form_list_ace14, schema_nonexistent_table - Add concrete table/query name assertions to version-specific CLI tests (tables_jet3/ace12/ace14/ace17, queries_list_jet3/v2010) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…hin CLI tests - Add ACE17 (V2019) tests to library: catalog, table, data, file - Add JET3/ACE14 query version tests to library: query.rs - Remove version-compat, encryption, and i18n functional tests from CLI (-63 tests) - Merge schema_single_table_columns into schema_single_table - CLI tests now only cover flags, output format, and error messages Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- docs/form-design.md — Internal structure of form/report design definitions - docs/lib.md — Library API documentation - docs/msysqueries.md — Internal structure of MSysQueries Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Library: add Display tests for BlobValue::Double and BlobValue::Guid - Library: add unit tests for parse_section_props type 0x04/0x06/0x08 - Library: add AES CBC/ECB roundtrip tests for all key sizes (128/192/256) - Library: add Agile/Standard AES page decryption tests (192/256-bit) - Library: add SHA384/SHA512 hash, derive_key, iterate_hash_sha1 tests - CLI: add success-path tests for form controls and form props - CLI: add tests for --forms-only, --reports-only, -d flags - CLI: add tests for form dump with typeinfo/propdata streams Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update coverage notes with current percentages (relationship.rs ~76%, vba.rs ~80%, crypto.rs ~88%) - Add complexity-filter crate description to complexity metrics section - Add quality check script (scripts/quality-check.sh) section - Fix execution order to match actual script order (test→clippy→audit→doc→coverage→complexity) - Keep English and Japanese versions in sync Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix parse_type_info reading entry_count from offset 8 (always 0xFFFFFFFF) instead of correct offset 12 - Add upper bound check on entry_count to return error instead of panic on invalid data - Update TypeInfo header documentation to reflect accurate 32-byte structure - Fix synthetic test data offsets Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
formCLI subcommand (list / dump / controls / props)Changes
crates/jetdb/src/form.rs— Form stream extraction, TypeInfo/Blob parser, property analysis (1788 new lines)crates/jetdb/src/storage.rs— MSysAccessStorage read supportcrates/jetdb-cli/src/form.rs— form subcommand implementation (list/dump/controls/props)🤖 Generated with Claude Code