Releases
Product updates, improvements, and fixes for PracticeTET.
Patch release fixing direct content review URLs that previously fetched the full content list, showed a Coming soon placeholder, and rendered the group sidebar outside batch review mode.
Added
Nothing added in this release.
Fixed
- Direct content review detail URLs no longer fetch the full /api/content-review list when ?inGroup= is absent
- Coming soon placeholder no longer appears on valid single-content review pages after the revision loads
- Content review sidebar, prev/next navigation, and group position label now appear only in ?inGroup= batch review mode
Removed
Nothing removed in this release.
Patch release adding content review groups with extraction-job grouping and in-group batch navigation, server-side pagination for the content list at production scale, a strengthened submit-to-review and approval workflow with AST validation, and a fix for repeated revision API fetches on the content detail screen.
Added
- ContentReviewGroup collection with create and list APIs, extraction-job Group Content action, and Content Groups tab on the content review list
- Batch review navigation via ?inGroup= on content detail routes, opening the first question when a group is selected
- Server-side paginated content review list with debounced search and batched revision lookups for large datasets
- AST schema validation for solution sections and shared stimulus, required on submit-to-review and persisted with the revision
- Assigned reviewer gating for accuracy, UI, and sign-off approvals with duplicate submission rejection
- Content review sidebar revision status filter with color-coded item circles, legends, and status counts
- Return to draft flow and review reset when saving content changes on an in-review revision
Fixed
- ContentReviewScreen no longer refetches the same revision on every re-render from unstable useEffect dependencies
- Production sign-off now sets revision status to SIGNED_OFF instead of remaining IN_REVIEW
- ContentType enum import in paginated content list query so group and list APIs load correctly
Removed
- Dedicated /studio/content-review/groups/{groupId} list screen in favor of direct in-group detail navigation
Minor release delivering the content-review revision workflow, decorator tabs for solution and speech segments, Google Cloud TTS synthesis with S3 audio storage, and content-view playback with combined and per-segment downloads.
Added
- Full content-review revision workflow under studio routes with list, detail, comments, verification, and revision actions
- Content Review decorators tab with solution, speech segments, and TTS audio decorator work panels
- Solution decorator execute, apply, effective execution selection, and decorator AST content view rendering
- Speech segments decorator with segment grouping, apply-to-document flow, and short-video content-review revision wiring
- TTS audio decorator with per-segment Google Cloud synthesis, execution logs, effective segment selection, and Use it apply flow
- S3-backed TTS audio upload and proxy serving with fileS3ObjectKey on speech segment audio metadata
- Content view Audio menu with field-container highlight playback, Download Combined, and Download all actions
- BOLD and ITALIC AST node types with validators and tightened solution decorator prompt guidance
- Shared stimulus context display, decorator section badges, and application-steps stepper in content preview
Fixed
- Content review screen rendering for current ASTLib node types
- Application steps stepper connector layout during field playback highlighting
- Use it button and stale-content warning visibility when decorator output is not yet applied
Removed
Nothing removed in this release.
Minor release adding React AST renderers for all ASTLib node types, a studio playground with language, layout, and preview modes, and structured views for tables, statements, match columns, assertion/reason, rearrangement, and labelled parts.
Added
- React AST renderers for all ASTLib node types through ASTRendererRegistry
- AST Renderer Playground with per-node examples, EN/HI/MR copy, web/mobile/responsive preview, and inline/block layout toggle
- HeroUI table rendering with SIMPLE and 2DHEADER playground examples, sky-600 headers, and 2D corner arrows
- Statements layout with overlapping S1–S4 badges and gray card rows
- Match columns two-column card layout with mapping pills for match options
- Assertion/reason card layout, rearrangement sentence vs letter unit types, and REARRANGEMENT_OPTION label-chain badges
- Labelled parts sentence rendering with inline labelled-part chips
- Self-hosted Temml Noto Sans Math, AstImageView fullscreen zoom, and AstBlockScrollShadow for overflow on small screens
Fixed
- Highlight, underline, and fill-blank inline decorations for a cleaner renderer look
- Table horizontal scrollbars stay visible on wide AST tables
- Playground node list hides composed child types such as STATEMENT, TABLE_ROW, TABLE_CELL, MATCH_COLUMN, and MATCH_ITEM
Removed
- Monolithic astRendererPlaygroundExample data file in favor of the per-node playground module
Patch release fixing ASTify Generate Failed outcomes when model JSON contains invalid LaTeX escapes, and adding AST tab recovery with editable editor and Validate for failed generations.
Added
- Loose JSON parsing for AST Builder responses to tolerate invalid escapes such as \circ in LaTeX
- Generate Failed AST tab recovery from effective execution logs with editable editor, info banner, and Validate
Fixed
- ASTify no longer marks content units as Generate Failed when the model response is readable but strict JSON.parse fails on LaTeX backslashes
Removed
Nothing removed in this release.
Patch release improving Content Review and Extraction Jobs table pagination, showing extracted AST on validation failure with manual edit and re-validate, and removing strict rawString echo checks from AST Builder validation.
Added
- Compact table pagination (first 5, current neighborhood, last 5) on Content Review and Extraction Jobs lists
- Content Review table page size increased to 25 rows
- AST tab always shows extracted AST after a successful ASTify call, with validation errors above the editor
- Editable AST editor and Validate action on validation failure, with automatic save when AST validation passes
- POST validate-ast API to re-validate and persist manually corrected content unit AST
Fixed
- AST Builder no longer fails validation when model echoes rawString with minor LaTeX escaping or delimiter differences
Removed
- AST_BUILDER_002 rawString exact-match check from AST Builder response validation
Patch release adding Mistral prompt prefix caching with cached-token cost tracking in execution logs, fixing PTMD batch output when Mistral returns multiline JSON, and allowing empty TABLE_CELL nodes for 2DHEADER tables during AST validation.
Added
- Mistral prompt_cache_key on revision-scoped runs with cached input token rates and Cache hit metadata in execution logs
Fixed
- PTMD batch editor no longer shows raw JSON when Mistral returns literal newlines inside ptmdData strings
- AST validation accepts empty TABLE_CELL children for structurally empty 2DHEADER table cells
Removed
Nothing removed in this release.
Patch release adding provider/model selection in the Prompt Console (OpenAI, Gemini, Mistral) with model-specific execution costs, and refining RawToPTMD Assertion-Reason rules to use Assertion/Reason labels in options.
Added
- Prompt Console model picker with provider catalog, per-model pricing display, and revision persistence
- Central AI provider executor for OpenAI, Gemini, and Mistral with unified execution logs
Fixed
- Prompt execution costs now use selected model pricing instead of global GPT-4o mini defaults
- RawToPTMD Assertion-Reason options now rewrite A/R shorthand to Assertion/Reason labels
Removed
Nothing removed in this release.
Patch release fixing Content Document stage load failures on large extraction jobs by slimming the content-artifacts list API and lazy-loading artifact details, resolving a Firebase build error, and updating app shell responsive width breakpoints.
Added
- ContentArtifactEJSummary list response for content-artifacts with per-artifact INR cost aggregation
- GET content-artifacts/[artifactId] detail endpoint for full AST and GPT execution logs
- Lazy-load content artifact details when accordion rows expand on the Content Document stage
Fixed
- Content Document stage blank UI and JSON parse failures on large jobs caused by ~33MB content-artifacts responses corrupted mid-stream
- Incorrect "Create Content Artifacts" empty state when artifact list fetch failed for AST-stage jobs; now shows retry
- Firebase production build TypeScript error from invalid ExtractionJobJourneyModal size prop
- App shell, navbar, and footer width breakpoints updated to 97% below 1600px and 80% at 1600px and above
Removed
Nothing removed in this release.
Patch release adding CategorizationBasedMCQ PTMD and AST support for classify-items-into-categories questions, extraction job status audit timeline with journey modal, and PracticeTET favicon branding.
Added
- CategorizationBasedMCQ PTMD type with @Reference(CATEGORIZATION, SIMPLE), compiler IR parsing, structure skeletons, and pass-through validators
- ASTLib nodes CATEGORIZATION, CATEGORIZATION_CATEGORY, CATEGORIZATION_ITEM, and CATEGORIZATION_OPTION with validators and ASTBuilderPrompt documentation
- Extraction job journey modal with status audit timeline, transition cards, active-stage indicator, and time-spent tracking
- Status audit recording on extraction job create, save, and status transitions with initial-save backfill for older jobs
- PracticeTET favicon and layout, navbar, and footer branding updates
Fixed
- Extraction job journey time-spent calculation now measures duration in the previous status correctly
Removed
Nothing removed in this release.
Minor release adding PTMD skeleton insertion on the Compile stage editor, new Rearrangement and Labelled Parts MCQ types with compiler support, matching ASTLib nodes and validators, and RawToPTMD prompt improvements.
Added
- PTMD skeleton insertion select on the Compile stage PTMD editor with structure templates for question types, sheet types, and reference blocks
- RearrangementBasedMCQ and LabelledPartsQuestion PTMD types with compiler and reference support
- ASTLib nodes REARRANGEMENT, REARRANGEMENT_ITEM, LABELLED_PARTS_OF_CONTENT, and LABELLED_PART with validators
- PTMD structure skeletons documentation for manual editing on the Compile stage
Fixed
- RawToPTMD prompt improvements
Removed
Nothing removed in this release.
Minor release delivering the end-to-end content extraction AST pipeline, publish-to-Content Review workflow, a new Content Review studio screen, and ASTLib validation coverage across core and complex node types.
Added
- Content Review publish flow from approved extraction jobs into Content/ContentRevision records
- Content Review studio list and revision detail screens
- Content Document Approve tab with insight cards, publish modal, and published content table
- Content Artifacts panel with accordions, content unit selector, Raw/AST/Executions tabs, and ASTify GPT integration
- Bulk ASTify modal with sequential processing, progress UI, and extraction job status sync
- ASTLib node types, validators, and renderers with vitest coverage across basic and complex AST nodes
- PTMD compiler validation, flexible MATCH_COLUMN headers, MATCH_OPTION node type, and PTMD scroll sync
- IR-to-ContentArtifactEJ adapter, Retry AST action, and Content Review architecture documentation
Fixed
- Accordion trigger hydration error in extraction job UI
- ASTBuilderPrompt, RawToPTMD prompt, and PTMD compiler statement rule handling
Removed
- referenceType concept from ContentArtifact schema, deprecated in documentation
Patch release documenting AST and QuestionDocument schemas, improving the PTMD Monaco editor and prompt, adding a content extraction stage CTA, and fixing archived extraction job actions.
Added
- AST approach and structure documentation
- QuestionDocument schema for ContentArtifactEJ (type = QUESTION)
- Content extraction job check and create content documents CTA on stage three
- PTMD Monaco editor syntax highlighting and improved PTMD prompt
- Batch-level error count in PTMD reference validation
- TEST PTMD raw markdown data file and strict solution sheet batch violation docs
Fixed
- Archived extraction jobs now disable actions on the extraction job flow screen
Removed
Nothing removed in this release.
Patch release adding archive flows for extraction jobs and prompts, a PTMD Generate tab batch filter popover, active and total PTMD batch cost display, expanded subject metadata defaults, and fixes for extraction job filtering and job name validation.
Added
- Archive and restore flows for extraction jobs and prompts with Show Archived toggle
- PTMD Generate tab batch filter popover with multiselect Batch Type and Batch Status filters
- PTMD stage cost chip showing Active and Total spend, with tooltip explaining each
- Server-side total PTMD batch cost aggregation including archived batch execution logs
- Marathi and SocialScience subject code options in tag select and allowed PTMD subjects
- Default document metadata fields meta.isPracticeSet = false and meta.paper = 1
Fixed
- Extraction job tag and status filtering now returns correct results when combined
- Extraction job name validation and editable job name sync with live extraction job code
Removed
- PTMD Generate tab batch type and status TagGroup filters replaced by filter popover
Introduces a three-phase PTMD compiler with Compile-to-IR workflow, extraction job status filters for the PTMD pipeline, AnswerKey batching with type-aware batch groups, and fixes for job status transitions and scoped batch marker insertion.
Added
- Three-phase PTMD compiler with parser, validator, and IR builder
- Compile tab replacing PTMD validation runs, with dry-run compile and IR JSON preview
- Save flow that persists PTMD and compiled IR with IR_SUCCESS or PTMD_GENERATED status
- PTMD Batched, PTMD Generated, and IR Success filters on the extraction jobs screen
- Document-based line indexing in PTMD compiler error reporting
- AnswerKey batching in raw markdown with single @Batch / @BatchEnd wrapper under AnswerSheet
- Batch type field and badges (QuestionSheet, AnswerKey, SolutionSheet) with type filter TagGroup
- Batch groups split by type first, then chunked to five entries without mixing sheet types
Fixed
- Job status now transitions to PTMD Generated when all batches complete, with server refresh after parallel batch generation
- Insert @Batch / @BatchEnd now updates only the target sheet and preserves existing batch markers in other sheets
Removed
- PTMD validation runs history UI and run validation API flow
- Legacy extraction job statuses PTML_TO_GENERATE, PTML_VALIDATED, and VALID_IR
Fix release adjusting raw markdown batch character limits, resolving the extraction jobs column picker runtime error, and raising the prompt template editor limit to 20K characters.
Added
Nothing added in this release.
Fixed
- Extraction jobs table column picker crash when toggling visible columns (cell/column count mismatch in resizable table)
- Raw markdown batch validation now uses a 5,000-character limit with line-based limits removed
- Auto batch marker insertion now splits at 2,000 characters instead of 1,800, without line-based splitting
- Prompt template and preview editor character limit increased from 5K to 20K
Removed
Nothing removed in this release.
Major release introducing the Prompt Management console, central GPT prompt execution with run history, and PTMD batch creation with GPT generation, effective execution selection, stitching, and cost tracking.
Added
- Prompt Management console with prompts table, search, filters, column picker, and column resizing
- Prompt console header with revision label, status label, and expandable details accordion
- Edit tab for prompt console with template editing, placeholders, layout handling, save, and new revision creation with validations
- Playground tab with placeholder color labelling and local run preview
- Common GPT prompt executor integrated with Prompts Playground runs and central execution logging
- Run history with request/response copying and recent runs display
- Client allowlisting in prompt revision basic details with execution context configuration
- PTMD batch creation from raw markdown with @BatchPlaceholder stitching
- PTMD batch generation with GPT executions, group-level parallel Generate, and cost tracking
- Effective GPT execution selection per batch with stitched PTMD updates when execution hash changes
- Prompt settings control on extraction PTMD stage with pending and completed batch filters
- Generate calls routed through central GPT util with execution logs stored in AIPromptExecutionLogs
- PTMD Batched and PTMD Ready extraction job statuses
- Unlock modals for protected raw markdown and PTMD editing flows
- Maths_Science and SocialScience_SocialStudies subject code tag category values
Fixed
Nothing fixed in this release.
Removed
Nothing removed in this release.
Extraction jobs list improvements including search, pagination, structured tags, filtering, batch count support, and a releases screen.
Added
- Search filtering across job names, exams, and tags
- Jobs pagination on the extraction jobs list
- Batch count support for extraction jobs
- Add tags, remove tags, and auto-extraction of tags from document metadata
- Tags column in the extraction jobs table
- Structured tags with category labels and custom tag creation UI
- Filter popover with tag and status filter types
- Releases screen for product version history
Fixed
Nothing fixed in this release.
Removed
Nothing removed in this release.