• v1.4.0 c8c2b73eb1

    ruivenda released this 2026-07-02 20:27:46 +01:00 | 0 commits to main since this release

    Ponte entre os requisitos de ObjectType (típicos de IDS municipais, ex.: GAIURB) e o
    fluxo do ArchiCAD: em vez de escrever o ObjectType elemento a elemento, gera-se uma
    classificação importável e o Type Mapping do ArchiCAD converte-a em ObjectType na
    exportação — mantendo o IDS de validação a verificar o ObjectType.

    Adicionado

    • Assistente ObjectType → classificação (para o ArchiCAD). Quando uma especificação
      filtra por ObjectType na aplicabilidade (ex.: IfcSpace USERDEFINED com ObjectType=AREALOTE),
      o construtor deteta-o e mostra «Classificações para o ArchiCAD»: defines o sistema (ex.:
      «GAIURB») e geras um .ids separado com as classificações equivalentes
      (system : ObjectType), que o ArchiCAD importa e cria — atribuis a classificação aos
      elementos e o Type Mapping do ArchiCAD escreve o ObjectType na exportação (mais intuitivo
      que preencher o ObjectType elemento a elemento). Não altera o IDS de validação. Módulo
      lib/ids/objectTypeClass.ts (detectObjectTypes/buildClassificationSpecs) +
      exportClassificationsIds; guia de Type Mapping embutido na UI. Confirmado na documentação
      Graphisoft que o Type Mapping for IFC Export suporta classificação → IFC Type + USERDEFINED
      ObjectType.
    Downloads
  • v1.3.0 c8c2b73eb1

    ruivenda released this 2026-07-02 20:08:04 +01:00 | 0 commits to main since this release

    O construtor de IDS deixou de ser só de escrita: passa a ler ficheiros .ids
    de terceiros (BIMcollab, Datacomp, usBIM, …) para dentro do editor, onde podem ser
    lidos, analisados e editados. Ao importar, o que estiver fora da norma buildingSMART
    IDS 1.0 é normalizado (e reportado em notas de conformidade); ao guardar, o
    construtor gera sempre um .ids canónico e válido — o mesmo caminho que corrige, por
    via do round-trip, ficheiros que outras ferramentas recusam importar. Sintoma que
    motivou a funcionalidade: ficheiros válidos contra o XSD mas rejeitados na importação
    por faltas semânticas (ver dados/IDS-Archicad/RELATORIO_Diagnostico_IDS_Archicad.md).

    Adicionado

    • Abrir .ids no construtor (idsEditor.openIdsIntoEditor): botão «Abrir .ids» na
      barra do construtor e no painel IDS (barra lateral). Não exige modelo aberto — permite
      estudar/analisar especificações de terceiros só para aprender a norma.
    • Importador .ids → construtor (app/src/lib/ids/importer.ts, parseIdsToEditor):
      lê especificações, aplicabilidade (entidade + PredefinedType + facetas extra),
      requisitos, restrições (xs:restriction: enumeração/padrão/intervalo) e <info>.
      Normaliza pelo caminho: dataType em falta inferido do esquema IFC4
      (inferDataType), cardinalidade da aplicabilidade não-normativa (ex.: minOccurs=0
      sem maxOccurs, estado 0..1) ajustada para uma das três combinações legais, e
      curingas estilo BIMcollab (?/*) convertidos em xs:pattern.
    • Notas de conformidade IDS no construtor: painel discreto que lista o que foi
      normalizado (verde), o que convém rever (âmbar — ex.: propriedade num Pset_ reservado
      que não consta do esquema, com sugestão de grafia via distância de Levenshtein) e
      informação (verificações de existência, versões IFC múltiplas, facetas não editáveis).
    • Verificação de existência tratada explicitamente. Uma especificação sem requisitos
      cujo critério vive na aplicabilidade (ex.: «tem de existir um IfcSpace com
      ObjectType=AREALOTE», do IDS municipal GAIURB) deixa de ser sinalizada como incompleta —
      é uma construção IDS válida. Na secção «Tem de cumprir» aparece um card com a
      obrigatoriedade editável (tem de existir / pode existir / não pode existir, ligada à
      cardinalidade da aplicabilidade); a frase em PT reflecte-a; a lista mostra «existência» em
      vez de «0»; e o lint deixou de bloquear a gravação/validação de specs sem requisitos.
    • Assistente ObjectType → classificação (para o ArchiCAD). Quando uma especificação
      filtra por ObjectType na aplicabilidade (ex.: IfcSpace USERDEFINED com ObjectType=AREALOTE,
      típico de IDS municipais), o construtor deteta-o e oferece «Classificações para o ArchiCAD»:
      defines o sistema (ex.: «GAIURB») e geras um .ids separado com as classificações
      equivalentes (system : ObjectType), que o ArchiCAD importa e cria — atribuis a classificação
      aos elementos e o Type Mapping do ArchiCAD escreve o ObjectType na exportação (mais
      intuitivo que preencher o ObjectType elemento a elemento). Não altera o IDS de validação.
      Módulo lib/ids/objectTypeClass.ts (detectObjectTypes/buildClassificationSpecs) +
      exportClassificationsIds; guia de Type Mapping embutido na UI.
    • Comando read_text_file (commands/session.rs, registado em lib.rs) + wrapper
      readTextFile (utils/tauri.ts), simétrico ao write_text_file.
    • Helpers de catálogo (data/idsCatalogue.ts): isCataloguePset, catalogueHasProp,
      catalogueSuggestProp (para as notas de conformidade).

    Alterado

    • Serialização separada do estado: buildIdsXml (e helpers) movida de
      stores/idsEditor.ts para o módulo puro app/src/lib/ids/serialize.ts (testável
      isoladamente; idsEditor.ts re-exporta buildIdsXml — sem quebrar consumidores).
    • Enquadramento por conformidade, não por ferramenta: a UI e as notas falam de
      conformidade com a norma buildingSMART IDS 1.0, não de «corrigir para o ArchiCAD»
      (removidas as menções a «regra do ArchiCAD» nos metadados do editor). Um IDS conforme
      a norma importa em qualquer ferramenta compatível.
    • Assistente de IA escondido fora de DEV (aiAllowed): a barra de IA do construtor
      passa a aparecer apenas em builds DEV (antes também em licença paga).
    • Dropdown de versão IFC compacto no cabeçalho da especificação (rótulo IFC4x3 para
      IFC4X3_ADD2), deixando mais espaço ao campo do nome.

    Testes

    • Motor validado contra os 3 ficheiros reais em dados/ (EN_Basic IDM Check,
      PT_Controle Basico do MEI, requisitosifcgaiurb): importação sem erros, dataType
      inferido em todas as propriedades, cardinalidades legais, curingas convertidos,
      round-trip limpo e idempotente, e deteção das 3 especificações sem requisitos do
      ficheiro GAIURB (com preservação das restrições de intervalo Eastings/Northings).
    Downloads
  • v1.0.3 c8c2b73eb1

    ruivenda released this 2026-06-21 17:11:04 +01:00 | 0 commits to main since this release

    Adicionado

    • Distribuição Windows. Instalador NSIS x64 assinado, com auto-update — corre
      nativo em x64 e por emulação em Windows-on-ARM (artefacto universal). Publicado
      nas releases Gitea ao lado do macOS.

    Alterado

    • Instalador em Português europeu (PT-PT) por defeito (antes saía em PT-BR).

    Corrigido

    • Build determinista cross-OS: package-lock.json passa a ser versionado (sem
      ele o Windows resolvia um rolldown mais estrito e o build divergia do macOS).
    • Parâmetro opcional TS (fav?:) no snippet rowList reescrito para fav: boolean = false (compatível com qualquer parser).
    • Script de release Windows: artefacto -setup.exe (Tauri 2.x), localização do
      bundle (workspace ..\target) e verificação do key_id.
    Downloads
  • v1.0.2 c8c2b73eb1

    ruivenda released this 2026-06-21 00:10:18 +01:00 | 0 commits to main since this release

    Adicionado

    • Recuperação de licença por email (código OTP). No tab Licenciar, "Não tenho a
      chave" envia um código de 6 dígitos para o email associado; ao confirmar, a licença
      é recuperada e activada automaticamente nesta máquina. Suportado pelos endpoints
      recover/recover/verify do InforNext (resposta genérica, código de validade curta,
      uso único, limite de tentativas).
    • Botão "Procurar actualizações" no painel de licença — verifica updates a pedido
      (antes só no arranque), com feedback (a procurar / já actualizado / disponível / falhou).
    Downloads
  • v1.0.0 c8c2b73eb1

    ruivenda released this 2026-06-20 17:43:40 +01:00 | 0 commits to main since this release

    Alterado

    • Dependências frontend para o latest: Tailwind CSS 3 → 4 (via
      @tailwindcss/vite (plugin) + esbuild explícito + target esnext + @import 'tailwindcss' + @config '../tailwind.config.js';
      autoprefixer removido), Vite → 8, @sveltejs/vite-plugin-svelte → 7,
      TypeScript → 6, @types/node → 26, SvelteKit 2.66, Svelte 5.56, svelte-check 4.6.
    • Tauri JS alinhado em 2.11; o Rust alinha no build com cargo update.
    Downloads
  • ruivenda released this 2026-06-20 16:28:28 +01:00 | 0 commits to main since this release

    Auto-actualização integrada (infra-estrutura isBIM, paridade com a Norma).

    Adicionado

    • Plugins tauri-plugin-updater + tauri-plugin-process (Cargo + lib.rs),
      com as permissões updater:default e process:allow-restart nas capabilities.
    • UI UpdateBanner discreta no canto inferior direito (acima do rodapé):
      versão + notas de release limpas (Markdown → texto simples), barra de
      progresso durante o download e botões «Atualizar e reiniciar» / «Mais tarde».
      Store stores/updater.ts (verificação silenciosa no arranque, tolerante a
      falhas/offline) ligado no +layout.svelte de forma não-bloqueante.
    • Endpoint de updates https://next.infor.pt/api/visus3d/v1/update/{{target}}/{{arch}}/{{current_version}}?channel=stable
      e createUpdaterArtifacts: true no tauri.conf.json (com pubkey a colar).
    • build-release.sh unificado (paridade Norma): argumento --publish,
      carregamento de segredos de ~/.config/isbim/release.env, leitura da chave do
      updater de ~/.tauri/isbim-visus3d-updater.key, password per-app
      VISUS3D_UPDATER_PASSWORD, verificação dos artefactos .app.tar.gz + .sig
      e encadeamento opcional do publish-release.sh.
    • publish-release.sh novo: cria a release no Gitea e sobe os artefactos de
      update (+ smoke-test do manifest). Requer o repo INFOR/isBIM-visus3d-releases
      público (download anónimo dos assets pelo backend).

    i18n

    • Bloco update (pt/en): available, install, later, downloading, error.
    Downloads