Skip to content

fzextract: started work to extract structs#6128

Merged
michaellilltokiwa merged 5 commits intotokiwa-software:mainfrom
michaellilltokiwa:fzextract--started-work-to-extract-`structs`
Feb 26, 2026
Merged

fzextract: started work to extract structs#6128
michaellilltokiwa merged 5 commits intotokiwa-software:mainfrom
michaellilltokiwa:fzextract--started-work-to-extract-`structs`

Conversation

@michaellilltokiwa
Copy link
Copy Markdown
Member

@michaellilltokiwa michaellilltokiwa commented Oct 27, 2025

example output:

#
# autogenerated by fzextract.fz from /usr/lib/llvm-19/include/clang-c/Index.h
#

module c is

################################### structs ####################################

  module CXTUResourceUsage(module data Native_Ref /* from: void * */, module numEntries u32, module entries Native_Ref /* from: CXTUResourceUsageEntry * */) is
  module CXIdxIBOutletCollectionAttrInfo(module attrInfo Native_Ref /* from: CXIdxAttrInfo * */, module objcClass Native_Ref /* from: CXIdxEntityInfo * */, module classCursor c.CXCursor, module classLoc c.CXIdxLoc) is
  module CXCursorSetImpl() is
  module CXCursor(module kind u32 /* from: enum CXCursorKind */, module xdata i32, module data Native_Ref /* from: void *[3] */) is
  module CXCodeCompleteResults(module Results Native_Ref /* from: CXCompletionResult * */, module NumResults u32) is
  module CXCursorAndRangeVisitor(module context Native_Ref /* from: void * */, module visit Native_Ref /* from: enum CXVisitorResult (*)(void *, CXCursor, int) */) is
  module CXIdxContainerInfo(module cursor c.CXCursor) is
  module CXIdxBaseClassInfo(module base Native_Ref /* from: CXIdxEntityInfo * */, module cursor c.CXCursor, module loc c.CXIdxLoc) is
  module CXIdxCXXClassDeclInfo(module declInfo Native_Ref /* from: CXIdxDeclInfo * */, module bases Native_Ref /* from: CXIdxBaseClassInfo ** */, module numBases u32) is
  module CXIdxDeclInfo(module entityInfo Native_Ref /* from: CXIdxEntityInfo * */, module cursor c.CXCursor, module loc c.CXIdxLoc, module semanticContainer Native_Ref /* from: CXIdxContainerInfo * */, module lexicalContainer Native_Ref /* from: CXIdxContainerInfo * */, module isRedeclaration i32, module isDefinition i32, module isContainer i32, module declAsContainer Native_Ref /* from: CXIdxContainerInfo * */, module isImplicit i32, module attributes Native_Ref /* from: CXIdxAttrInfo ** */, module numAttributes u32, module flags u32) is
  module CXIdxObjCProtocolRefInfo(module protocol Native_Ref /* from: CXIdxEntityInfo * */, module cursor c.CXCursor, module loc c.CXIdxLoc) is
  module CXIdxObjCCategoryDeclInfo(module containerInfo Native_Ref /* from: CXIdxObjCContainerDeclInfo * */, module objcClass Native_Ref /* from: CXIdxEntityInfo * */, module classCursor c.CXCursor, module classLoc c.CXIdxLoc, module protocols Native_Ref /* from: CXIdxObjCProtocolRefListInfo * */) is
  module CXIdxLoc(module ptr_data Native_Ref /* from: void *[2] */, module int_data u32) is
  module CXIdxObjCInterfaceDeclInfo(module containerInfo Native_Ref /* from: CXIdxObjCContainerDeclInfo * */, module superInfo Native_Ref /* from: CXIdxBaseClassInfo * */, module protocols Native_Ref /* from: CXIdxObjCProtocolRefListInfo * */) is
  module CXIdxObjCPropertyDeclInfo(module declInfo Native_Ref /* from: CXIdxDeclInfo * */, module getter Native_Ref /* from: CXIdxEntityInfo * */, module setter Native_Ref /* from: CXIdxEntityInfo * */) is
  module CXIndexOptions(module Size u32, module ThreadBackgroundPriorityForIndexing u8, module ThreadBackgroundPriorityForEditing u8, module ExcludeDeclarationsFromPCH u32, module DisplayDiagnostics u32, module StorePreamblesInMemory u32, module _ u32, module PreambleStoragePath mutate.array i8, module InvocationEmissionPath mutate.array i8) is
  module CXIdxObjCProtocolRefListInfo(module protocols Native_Ref /* from: CXIdxObjCProtocolRefInfo ** */, module numProtocols u32) is
  module CXPlatformAvailability(module Platform i32, module Introduced c.CXVersion, module Deprecated c.CXVersion, module Obsoleted c.CXVersion, module Unavailable i32, module Message i32) is
  module CXTranslationUnitImpl() is
  module CXTargetInfoImpl() is
  module CXToken(module int_data Native_Ref /* from: unsigned int[4] */, module ptr_data Native_Ref /* from: void * */) is
  module CXVersion(module Major i32, module Minor i32, module Subminor i32) is
  module CXType(module kind u32 /* from: enum CXTypeKind */, module data Native_Ref /* from: void *[2] */) is
  module _CXChildVisitResult() is
  module IndexerCallbacks(module abortQuery Native_Ref /* from: int (*)(CXClientData, void *) */, module diagnostic Native_Ref /* from: void (*)(CXClientData, int, void *) */, module enteredMainFile Native_Ref /* from: CXIdxClientFile (*)(CXClientData, int, void *) */, module ppIncludedFile Native_Ref /* from: CXIdxClientFile (*)(CXClientData, CXIdxIncludedFileInfo *) */, module importedASTFile Native_Ref /* from: CXIdxClientASTFile (*)(CXClientData, CXIdxImportedASTFileInfo *) */, module startedTranslationUnit Native_Ref /* from: CXIdxClientContainer (*)(CXClientData, void *) */, module indexDeclaration Native_Ref /* from: void (*)(CXClientData, CXIdxDeclInfo *) */, module indexEntityReference Native_Ref /* from: void (*)(CXClientData, CXIdxEntityRefInfo *) */) is
  module _CXCursorAndRangeVisitorBlock() is

############################ function declarations #############################

  # module clang_CXCursorSet_contains(cset *** unknown type ***, cursor c.CXCursor) i32 => native
  # module clang_CXCursorSet_insert(cset *** unknown type ***, cursor c.CXCursor) i32 => native
  # module clang_CXIndex_getGlobalOptions(_ *** unknown type ***) i32 => native
  # module clang_CXIndex_setGlobalOptions(_ *** unknown type ***, options u32) i32 => native
  # module clang_CXIndex_setInvocationEmissionPathOption(_ *** unknown type ***, Path mutate.array i8) i32 => native
  # module clang_EvalResult_dispose(E *** unknown type ***) i32 => native
  # module clang_EvalResult_getAsDouble(E *** unknown type ***) i32 => native
  # module clang_EvalResult_getAsInt(E *** unknown type ***) i32 => native
  # module clang_EvalResult_getAsLongLong(E *** unknown type ***) i32 => native
  # module clang_EvalResult_getAsStr(E *** unknown type ***) Native_Ref /* from: int * */ => native
  # module clang_EvalResult_getAsUnsigned(E *** unknown type ***) i32 => native
  # module clang_EvalResult_isUnsignedInt(E *** unknown type ***) i32 => native
  # module clang_IndexAction_dispose(_ *** unknown type ***) i32 => native
  # module clang_Module_getNumTopLevelHeaders(_ *** unknown type ***, Module *** unknown type ***) i32 => native
  # module clang_Module_isSystem(Module *** unknown type ***) i32 => native
  # module clang_PrintingPolicy_dispose(Policy *** unknown type ***) i32 => native
  # module clang_PrintingPolicy_getProperty(Policy *** unknown type ***, Property u32 /* from: enum CXPrintingPolicyProperty */) i32 => native
  # module clang_PrintingPolicy_setProperty(Policy *** unknown type ***, Property u32 /* from: enum CXPrintingPolicyProperty */, Value u32) i32 => native
  # module clang_TargetInfo_dispose(Info *** unknown type ***) i32 => native
  # module clang_TargetInfo_getPointerWidth(Info *** unknown type ***) i32 => native
  # module clang_Type_visitFields(T c.CXType, visitor *** unknown type ***, client_data *** unknown type ***) i32 => native
  # module clang_annotateTokens(TU *** unknown type ***, Tokens Native_Ref /* from: CXToken * */, NumTokens u32, Cursors Native_Ref /* from: CXCursor * */) i32 => native
  # module clang_createTranslationUnit2(CIdx *** unknown type ***, ast_filename mutate.array i8, out_TU Native_Ref /* from: CXTranslationUnit * */) i32 => native
  # module clang_defaultReparseOptions(TU *** unknown type ***) i32 => native
  # module clang_defaultSaveOptions(TU *** unknown type ***) i32 => native
  # module clang_disposeCXCursorSet(cset *** unknown type ***) i32 => native
  # module clang_disposeIndex(index_ *** unknown type ***) i32 => native
  # module clang_disposeTokens(TU *** unknown type ***, Tokens Native_Ref /* from: CXToken * */, NumTokens u32) i32 => native
  # module clang_disposeTranslationUnit(_ *** unknown type ***) i32 => native
  # module clang_getCompletionAvailability(completion_string *** unknown type ***) i32 => native
  # module clang_getCompletionChunkKind(completion_string *** unknown type ***, chunk_number u32) i32 => native
  # module clang_getCompletionNumAnnotations(completion_string *** unknown type ***) i32 => native
  # module clang_getCompletionPriority(completion_string *** unknown type ***) i32 => native
  # module clang_getFileContents(tu *** unknown type ***, file i32, size mutate.array i32) Native_Ref /* from: int * */ => native
  # module clang_getInclusions(tu *** unknown type ***, visitor *** unknown type ***, client_data *** unknown type ***) i32 => native
  # module clang_getNumCompletionChunks(completion_string *** unknown type ***) i32 => native
  # module clang_getNumDiagnostics(Unit *** unknown type ***) i32 => native
  # module clang_indexSourceFile(_ *** unknown type ***, client_data *** unknown type ***, index_callbacks Native_Ref /* from: IndexerCallbacks * */, index_callbacks_size u32, index_options u32, source_filename mutate.array i8, command_line_args Native_Ref /* from: char ** */, num_command_line_args i32, unsaved_files Native_Ref /* from: struct CXUnsavedFile * */, num_unsaved_files u32, out_TU Native_Ref /* from: CXTranslationUnit * */, TU_options u32) i32 => native
  # module clang_indexSourceFileFullArgv(_ *** unknown type ***, client_data *** unknown type ***, index_callbacks Native_Ref /* from: IndexerCallbacks * */, index_callbacks_size u32, index_options u32, source_filename mutate.array i8, command_line_args Native_Ref /* from: char ** */, num_command_line_args i32, unsaved_files Native_Ref /* from: struct CXUnsavedFile * */, num_unsaved_files u32, out_TU Native_Ref /* from: CXTranslationUnit * */, TU_options u32) i32 => native
  # module clang_indexTranslationUnit(_ *** unknown type ***, client_data *** unknown type ***, index_callbacks Native_Ref /* from: IndexerCallbacks * */, index_callbacks_size u32, index_options u32, _ *** unknown type ***) i32 => native
  # module clang_index_isEntityObjCContainerKind(_ *** unknown type ***) i32 => native
  # module clang_index_setClientContainer(_ Native_Ref /* from: CXIdxContainerInfo * */, _ *** unknown type ***) i32 => native
  # module clang_index_setClientEntity(_ Native_Ref /* from: CXIdxEntityInfo * */, _ *** unknown type ***) i32 => native
  # module clang_isFileMultipleIncludeGuarded(tu *** unknown type ***, file i32) i32 => native
  # module clang_parseTranslationUnit2(CIdx *** unknown type ***, source_filename mutate.array i8, command_line_args Native_Ref /* from: char ** */, num_command_line_args i32, unsaved_files Native_Ref /* from: struct CXUnsavedFile * */, num_unsaved_files u32, options u32, out_TU Native_Ref /* from: CXTranslationUnit * */) i32 => native
  # module clang_parseTranslationUnit2FullArgv(CIdx *** unknown type ***, source_filename mutate.array i8, command_line_args Native_Ref /* from: char ** */, num_command_line_args i32, unsaved_files Native_Ref /* from: struct CXUnsavedFile * */, num_unsaved_files u32, options u32, out_TU Native_Ref /* from: CXTranslationUnit * */) i32 => native
  # module clang_remap_dispose(_ *** unknown type ***) i32 => native
  # module clang_remap_getFilenames(_ *** unknown type ***, index_ u32, original mutate.array i32, transformed mutate.array i32) i32 => native
  # module clang_remap_getNumFiles(_ *** unknown type ***) i32 => native
  # module clang_reparseTranslationUnit(TU *** unknown type ***, num_unsaved_files u32, unsaved_files Native_Ref /* from: struct CXUnsavedFile * */, options u32) i32 => native
  # module clang_saveTranslationUnit(TU *** unknown type ***, FileName mutate.array i8, options u32) i32 => native
  # module clang_suspendTranslationUnit(_ *** unknown type ***) i32 => native
  # module clang_tokenize(TU *** unknown type ***, Range i32, Tokens Native_Ref /* from: CXToken ** */, NumTokens mutate.array u32) i32 => native
  # module clang_visitChildren(parent c.CXCursor, visitor *** unknown type ***, client_data *** unknown type ***) i32 => native
  # module clang_visitChildrenWithBlock(parent c.CXCursor, block *** unknown type ***) i32 => native
  module clang_CXXConstructor_isConvertingConstructor(C c.CXCursor) i32 => native
  module clang_CXXConstructor_isCopyConstructor(C c.CXCursor) i32 => native
  module clang_CXXConstructor_isDefaultConstructor(C c.CXCursor) i32 => native
  module clang_CXXConstructor_isMoveConstructor(C c.CXCursor) i32 => native
  module clang_CXXField_isMutable(C c.CXCursor) i32 => native
  module clang_CXXMethod_isConst(C c.CXCursor) i32 => native
  module clang_CXXMethod_isCopyAssignmentOperator(C c.CXCursor) i32 => native
  module clang_CXXMethod_isDefaulted(C c.CXCursor) i32 => native
  module clang_CXXMethod_isDeleted(C c.CXCursor) i32 => native
  module clang_CXXMethod_isExplicit(C c.CXCursor) i32 => native
  module clang_CXXMethod_isMoveAssignmentOperator(C c.CXCursor) i32 => native
  module clang_CXXMethod_isPureVirtual(C c.CXCursor) i32 => native
  module clang_CXXMethod_isStatic(C c.CXCursor) i32 => native
  module clang_CXXMethod_isVirtual(C c.CXCursor) i32 => native
  module clang_CXXRecord_isAbstract(C c.CXCursor) i32 => native
  module clang_Cursor_getBinaryOpcode(C c.CXCursor) i32 => native
  module clang_Cursor_getNumArguments(C c.CXCursor) i32 => native
  module clang_Cursor_getNumTemplateArguments(C c.CXCursor) i32 => native
  module clang_Cursor_getObjCDeclQualifiers(C c.CXCursor) i32 => native
  module clang_Cursor_getObjCPropertyAttributes(C c.CXCursor, reserved u32) i32 => native
  module clang_Cursor_getObjCSelectorIndex(_ c.CXCursor) i32 => native
  module clang_Cursor_getOffsetOfField(C c.CXCursor) i32 => native
  module clang_Cursor_getStorageClass(_ c.CXCursor) i32 => native
  module clang_Cursor_getTemplateArgumentKind(C c.CXCursor, I u32) i32 => native
  module clang_Cursor_getTemplateArgumentUnsignedValue(C c.CXCursor, I u32) i32 => native
  module clang_Cursor_getTemplateArgumentValue(C c.CXCursor, I u32) i32 => native
  module clang_Cursor_hasAttrs(C c.CXCursor) i32 => native
  module clang_Cursor_hasVarDeclExternalStorage(cursor c.CXCursor) i32 => native
  module clang_Cursor_hasVarDeclGlobalStorage(cursor c.CXCursor) i32 => native
  module clang_Cursor_isAnonymous(C c.CXCursor) i32 => native
  module clang_Cursor_isAnonymousRecordDecl(C c.CXCursor) i32 => native
  module clang_Cursor_isBitField(C c.CXCursor) i32 => native
  module clang_Cursor_isDynamicCall(C c.CXCursor) i32 => native
  module clang_Cursor_isExternalSymbol(C c.CXCursor, language mutate.array i32, definedIn mutate.array i32, isGenerated mutate.array u32) i32 => native
  module clang_Cursor_isFunctionInlined(C c.CXCursor) i32 => native
  module clang_Cursor_isInlineNamespace(C c.CXCursor) i32 => native
  module clang_Cursor_isMacroBuiltin(C c.CXCursor) i32 => native
  module clang_Cursor_isMacroFunctionLike(C c.CXCursor) i32 => native
  module clang_Cursor_isNull(cursor c.CXCursor) i32 => native
  module clang_Cursor_isObjCOptional(C c.CXCursor) i32 => native
  module clang_Cursor_isVariadic(C c.CXCursor) i32 => native
  module clang_EnumDecl_isScoped(C c.CXCursor) i32 => native
  module clang_Type_getAlignOf(T c.CXType) i32 => native
  module clang_Type_getCXXRefQualifier(T c.CXType) i32 => native
  module clang_Type_getNullability(T c.CXType) i32 => native
  module clang_Type_getNumObjCProtocolRefs(T c.CXType) i32 => native
  module clang_Type_getNumObjCTypeArgs(T c.CXType) i32 => native
  module clang_Type_getNumTemplateArguments(T c.CXType) i32 => native
  module clang_Type_getOffsetOf(T c.CXType, S mutate.array i8) i32 => native
  module clang_Type_getSizeOf(T c.CXType) i32 => native
  module clang_Type_isTransparentTagTypedef(T c.CXType) i32 => native
  module clang_codeCompleteGetContainerKind(Results Native_Ref /* from: CXCodeCompleteResults * */, IsIncomplete mutate.array u32) i32 => native
  module clang_codeCompleteGetContexts(Results Native_Ref /* from: CXCodeCompleteResults * */) i32 => native
  module clang_codeCompleteGetNumDiagnostics(Results Native_Ref /* from: CXCodeCompleteResults * */) i32 => native
  module clang_defaultCodeCompleteOptions i32 => native
  module clang_defaultEditingTranslationUnitOptions i32 => native
  module clang_disposeCXPlatformAvailability(availability Native_Ref /* from: CXPlatformAvailability * */) i32 => native
  module clang_disposeCXTUResourceUsage(usage c.CXTUResourceUsage) i32 => native
  module clang_disposeCodeCompleteResults(Results Native_Ref /* from: CXCodeCompleteResults * */) i32 => native
  module clang_disposeOverriddenCursors(overridden Native_Ref /* from: CXCursor * */) i32 => native
  module clang_enableStackTraces i32 => native
  module clang_equalCursors(_ c.CXCursor, _ c.CXCursor) i32 => native
  module clang_equalTypes(A c.CXType, B c.CXType) i32 => native
  module clang_executeOnThread(fn Native_Ref /* from: void (*)(void *) */, user_data Native_Ref /* from: void * */, stack_size u32) i32 => native
  module clang_getAddressSpace(T c.CXType) i32 => native
  module clang_getArraySize(T c.CXType) i32 => native
  module clang_getCXXAccessSpecifier(_ c.CXCursor) i32 => native
  module clang_getCompletionNumFixIts(results Native_Ref /* from: CXCodeCompleteResults * */, completion_index u32) i32 => native
  module clang_getCursorAvailability(cursor c.CXCursor) i32 => native
  module clang_getCursorBinaryOperatorKind(cursor c.CXCursor) i32 => native
  module clang_getCursorExceptionSpecificationType(C c.CXCursor) i32 => native
  module clang_getCursorKind(_ c.CXCursor) i32 => native
  module clang_getCursorLanguage(cursor c.CXCursor) i32 => native
  module clang_getCursorLinkage(cursor c.CXCursor) i32 => native
  module clang_getCursorPlatformAvailability(cursor c.CXCursor, always_deprecated mutate.array i32, deprecated_message mutate.array i32, always_unavailable mutate.array i32, unavailable_message mutate.array i32, availability Native_Ref /* from: CXPlatformAvailability * */, availability_size i32) i32 => native
  module clang_getCursorTLSKind(cursor c.CXCursor) i32 => native
  module clang_getCursorUnaryOperatorKind(cursor c.CXCursor) i32 => native
  module clang_getCursorVisibility(cursor c.CXCursor) i32 => native
  module clang_getDefinitionSpellingAndExtent(_ c.CXCursor, startBuf Native_Ref /* from: char ** */, endBuf Native_Ref /* from: char ** */, startLine mutate.array u32, startColumn mutate.array u32, endLine mutate.array u32, endColumn mutate.array u32) i32 => native
  module clang_getEnumConstantDeclUnsignedValue(C c.CXCursor) i32 => native
  module clang_getEnumConstantDeclValue(C c.CXCursor) i32 => native
  module clang_getExceptionSpecificationType(T c.CXType) i32 => native
  module clang_getFieldDeclBitWidth(C c.CXCursor) i32 => native
  module clang_getFunctionTypeCallingConv(T c.CXType) i32 => native
  module clang_getNumArgTypes(T c.CXType) i32 => native
  module clang_getNumElements(T c.CXType) i32 => native
  module clang_getNumOverloadedDecls(cursor c.CXCursor) i32 => native
  module clang_getOverriddenCursors(cursor c.CXCursor, overridden Native_Ref /* from: CXCursor ** */, num_overridden mutate.array u32) i32 => native
  module clang_getTUResourceUsageName(kind u32 /* from: enum CXTUResourceUsageKind */) Native_Ref /* from: int * */ => native
  module clang_getTemplateCursorKind(C c.CXCursor) i32 => native
  module clang_hashCursor(_ c.CXCursor) i32 => native
  module clang_indexLoc_getFileLocation(loc c.CXIdxLoc, indexFile Native_Ref /* from: CXIdxClientFile * */, file mutate.array i32, line mutate.array u32, column mutate.array u32, offset mutate.array u32) i32 => native
  module clang_isAttribute(_ u32 /* from: enum CXCursorKind */) i32 => native
  module clang_isConstQualifiedType(T c.CXType) i32 => native
  module clang_isCursorDefinition(_ c.CXCursor) i32 => native
  module clang_isDeclaration(_ u32 /* from: enum CXCursorKind */) i32 => native
  module clang_isExpression(_ u32 /* from: enum CXCursorKind */) i32 => native
  module clang_isFunctionTypeVariadic(T c.CXType) i32 => native
  module clang_isInvalid(_ u32 /* from: enum CXCursorKind */) i32 => native
  module clang_isInvalidDeclaration(_ c.CXCursor) i32 => native
  module clang_isPODType(T c.CXType) i32 => native
  module clang_isPreprocessing(_ u32 /* from: enum CXCursorKind */) i32 => native
  module clang_isReference(_ u32 /* from: enum CXCursorKind */) i32 => native
  module clang_isRestrictQualifiedType(T c.CXType) i32 => native
  module clang_isStatement(_ u32 /* from: enum CXCursorKind */) i32 => native
  module clang_isTranslationUnit(_ u32 /* from: enum CXCursorKind */) i32 => native
  module clang_isUnexposed(_ u32 /* from: enum CXCursorKind */) i32 => native
  module clang_isVirtualBase(_ c.CXCursor) i32 => native
  module clang_isVolatileQualifiedType(T c.CXType) i32 => native
  module clang_sortCodeCompletionResults(Results Native_Ref /* from: CXCompletionResult * */, NumResults u32) i32 => native
  module clang_toggleCrashRecovery(isEnabled u32) i32 => native

@michaellilltokiwa michaellilltokiwa added enhancement New feature or request native anything relating to native features and their infrastructure labels Oct 28, 2025
@michaellilltokiwa michaellilltokiwa requested a review from a team October 28, 2025 13:58
@michaellilltokiwa michaellilltokiwa marked this pull request as ready for review October 28, 2025 13:58
@maxteufel
Copy link
Copy Markdown
Collaborator

What does "started work" mean here? How complete is this? What is missing? I'll happily accept this only with partial implementation, but we should know what is done and what needs more work.

@michaellilltokiwa
Copy link
Copy Markdown
Member Author

I'd say it is 20% complete but already usable on simple header files. I added NYI of the missing things, among them:

  • a lot of c types do net yet get translated for which *** unknown type *** is printed out

@maxteufel
Copy link
Copy Markdown
Collaborator

And what is working so far? Your original comment on the pull request is just the code of a generated file. That doesn't really help me in knowing what we can do with this.

@maxteufel maxteufel marked this pull request as draft December 5, 2025 13:56
@michaellilltokiwa michaellilltokiwa marked this pull request as ready for review February 25, 2026 11:36
@michaellilltokiwa michaellilltokiwa requested review from a team and removed request for a team February 26, 2026 08:40
Copy link
Copy Markdown
Collaborator

@maxteufel maxteufel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This lacks a clear specification of what is supposed to happen, which makes this hard to review. Accepting anyway so we can merge, test, and refine this.

@michaellilltokiwa
Copy link
Copy Markdown
Member Author

@maxteufel Yes this all very experimental still...

@michaellilltokiwa michaellilltokiwa merged commit d8ab957 into tokiwa-software:main Feb 26, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request native anything relating to native features and their infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants