Skip to content

Releases: leandrodaf/3d-new-era-ai

3D New Era AI v3.1.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 11:23
v3.1.0
4e1df02

Added

  • Radiators in the catalog: radiator-60, radiator-100 and radiator-120 (panel, 10 cm deep,
    50 cm tall) and convector-100, hung 15 cm off the floor and found by radiador,
    radiator, aquecedor, heater, convector or hvac. A radiator under a window had to be
    drawn as a generic solid, with no place in counts.
  • create exact=true keeps every wall point where it was given. Otherwise wall ends that nearly
    touch a wall are still pulled onto it, and the reply now lists each one it moved
    (welded=w14.a→[615.7,448.7]). Walls traced from measured pixels came back with ends moved
    and nothing saying so.

Fixed

  • The editor no longer closes at launch on older Intel Macs (macOS 12): wgpu's validation of
    indirect draws builds a compute pipeline the Metal compiler there fails on, which lost the
    device. Nothing draws indirectly, so the check is off (WGPU_VALIDATION_INDIRECT_CALL=1 turns
    it back on).
  • A wall meeting a stepped junction — the end of a wide pier beside its axis — no longer shares
    that junction and gets a sloping long face in the plan.
  • catalog cat=<unknown> answers with the categories there are instead of an empty list.
  • A paste with nothing readable on the clipboard is no longer reported as an error.

What's Changed

  • fix: close the open Sentry reports (Metal crash, clipboard noise, MCP feedback) by @leandrodaf in #89
  • chore: release 3.1.0 by @leandrodaf in #90

Full Changelog: v3.0.0...v3.1.0

3D New Era AI v3.0.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 22:44
v3.0.0
2761a8c

Added

  • A plugin as heavy as a modeler declares limits in its plugin.json — heavy, threads,
    memory_mb, nice, timeout_s — and they are applied to its process: on Linux it is pinned
    to that many cores, its memory is capped and its priority lowered, and it gets
    NEWERA_THREADS for the program's own thread flag (Blender's --threads). A heavy plugin
    runs alone, sharing one slot with photo renders, so the machine's budget is not multiplied by
    every caller. run_plugin answers the peak memory and processor time it used (read from
    /proc; not measured elsewhere), the limits applied and those the system could not apply.
    An external modeler ran with whatever affinity and priority the agent remembered to set.

  • A model library, apart from projects: edit_library action=publish keeps a piece's model —
    with the files it names, its product photos and measurements, unit, size, brand, page, notes on
    what changed and how faithful it is — as the next version of an entry, never changed after;
    library lists entries and versions. place model=library:<name> (or @<v>) puts one in any
    project with its photos and measurements, at the size and in the unit it was published with,
    and edit_model replace file=library:<name>@<v> goes back to an older one under the same id.
    The library is on the desktop only (NEWERA_LIBRARY, or the config folder). Reusing a chair
    meant finding its files again, and its photos and checks stayed in the study's folder.

  • render_photo answers for the machine it runs on: estimate=true gives the thread budget
    (half the cores, at most four, one render at a time) and the work — pixels, rays, triangles,
    images, memory estimated from their sizes — without rendering, and says that time,
    temperature and power are not measured; threads lowers the threads it may use, max_s
    stops it past a deadline with nothing changed, and cancel=true stops the one running.
    sessions shows the render running (tool, seconds, phase, progress, threads). An agent
    could only pick a quality and a size, and a render already running was a refusal to wait on.

  • A piece keeps photos and measurements of the product it reproduces, with where they came
    from. edit_model action=reference adds a photo (file, view, part, source, note;
    remove, clear), which travels with the project; render_3d piece=… ref=i puts it beside
    the model, drawn from the photo's side and part. action=measure keeps a product size
    (dimension: width, depth, height or <part>.height; cm, source, confirmed), and
    model id=… lists each against what is drawn, warning when they differ by more than a
    centimeter — a seat at 49.5 cm checked apart from the chair's overall height. Photos had to
    be downloaded and compared by hand, and a size's source and meaning were not kept.

  • render_3d piece=<id> draws that piece alone — no walls, rooms or other pieces — seen from
    its own front, back, left, right or top (aerial is three-quarter), with zoom; the same call
    frames the same view wherever the piece stands. part=<name> frames one part of its model,
    such as the tip of an arm. Checking a chair against its photos meant a stored camera by
    coordinates, with the armchair next to it in the edge of the picture.

  • A piece with a heavy imported model can have a lighter file for afar: edit_model
    action=lod (file, beyond cm from the camera, default 400) draws it in the 3D view, the
    previews and photos when the camera is farther than that, in the same box, its materials and
    parts answering by the same names; detail=always holds the detailed file for a close review,
    and exports and top views always use it. The lighter file travels with the project, and one
    that cannot be read leaves the piece drawn in full. model says where the triangles go — cost {tris, heaviest [[part, tris, %]], copies, in_project} — and warns when a model over 50,000
    triangles has no lighter file. The Ares chair's weave was 69 % of its 89,718 triangles, and
    nothing said so.

  • A texture's alpha can cut holes: a glTF material with alphaMode: MASK (and its
    alphaCutoff), or an MTL whose map_d is its color image, has holes wherever the image's
    alpha is under the cutoff — in the 3D view, the previews and top views, and photos, where
    rays and sunlight pass through them — and is seen from both sides when the file says so (an
    MTL mask always is). Exports keep it: GLB as MASK, OBJ as map_d. A cane weave had to be
    modeled strand by strand: 62,256 of the Ares chair's 89,718 triangles.

  • edit_model action=part hides, moves (offset, cm: x across, y to the front, z up) or
    resizes (scale, about its center) one named part of an imported model — the back cushion
    alone, the arms where they were — and clear puts it back. Every view draws it that way, and
    model id=… lists the parts as drawn (a hidden one marked hidden, and left out of
    check=clashes), so seat and arm heights read on their own. Moving one cushion meant a new
    file.

  • edit_model action=material changes one material of an imported model by the name model
    lists — color, mat (an image over it), repeat (its texture scale: 2 draws the image at
    half size, the piece unchanged), clear — in one undo step. Per-material overrides existed
    (a Sweet Home 3D import brings them) but no tool could set one, and a weave drawn too large
    could only be fixed in the file.

  • place model=… takes unit (m, cm, mm, in) for the file's numbers, and the piece
    keeps it for model and edit_model. The unit was only guessed from the size — under 20 units
    meters, over 2000 millimeters — so a 5 cm knob drawn in centimeters came in 5 m wide, and an
    800 mm chair 8 m tall. When the guess makes a piece smaller than 10 cm or larger than 4 m, the
    reply says so. A glTF whose numbers are not meters, as the standard says they are, is warned
    about too.

  • A model placed with one or two of w/d/h scales evenly, keeping its proportions; sizes that
    would stretch it unevenly are refused unless stretch=true, and then the reply gives the
    scale on each axis. Asking a chair for its height stretched it.

  • model check=clashes finds the parts of an imported model that pass through one another —
    a cushion through a rail — with the triangle pairs, a point where they cross and how deep, in
    cm of the piece; surfaces that only touch (a cushion resting on the frame) are not a clash,
    and tol sets how far one has to pass the other. It also counts faces with no area, and says
    what it did not look at (a part wholly inside another, clearances, flipped normals, open
    meshes). The check had to be a script in Blender.

  • An imported model keeps its named parts — OBJ objects and groups, glTF nodes — and model
    lists them: [name, triangles, min, max, materials], in cm of the piece (x across, y to the
    front, z up), with part=<words> to keep only some (braco). A repeated name gets #2. The
    names come from the file, so they are the same after saving and reopening. The chair was one
    lump: telling the left arm from the right, or the seat cushion from the back, meant opening
    the file in another program.

  • edit_model action=replace puts a new version of a model file in placed pieces in one undo
    step, keeping each piece's id, position, angle, storey, size (size=natural takes the file's),
    finish, material overrides, names and links; every=true does it for every piece on the same
    file. The new file is read first and nothing changes when it fails; rev refuses the change
    when the plan moved on since the revision it was prepared on. The reply names the version
    loaded (bytes and a hash), the overrides that no longer match a material the file uses, a kept
    size that stretches the new file unevenly and what the file does not draw. A new version was
    place then delete: two pieces in one spot between the calls, a new id, and whatever the
    person had set on the old one lost.

  • model reads what an imported OBJ/glTF/GLB became: the unit taken for its numbers (and the
    numbers themselves), its natural size, triangles, each material with its color, image and
    triangle count, and warnings for what is not drawn as the file says — a material library or
    texture not found, normal, roughness and opacity maps, an alpha mask, emission, an extension,
    animations. Given a placed piece (id), it also says the scale per axis and warns when the
    piece is stretched unevenly. place model=… adds a line per model with such warnings, and
    importing from the window says them in the status bar: "it loaded" read as "it looks right",
    and finding out why a chair came in gray meant reading the importer.

  • Win armchair and Ares cane chair in the living and dining catalogs, with
    product dimensions, orientation, model metadata and bundled textured models. Models
    and their textures travel with saved projects; placement uses the existing catalog
    and MCP tools. Product proportions are preserved when resizing.

Changed

  • Breaking for clients that validate output schemas: render_photo's output schema no
    longer requires mimeType. estimate=true and cancel=true answer in text (JSON), not
    with an image, so a client that required mimeType on every reply must accept both.

Fixed

  • A glTF/GLB model keeps its textures. The importer read positions, normals and the base color
    factor only, so a chair whose wood and fabric were images inside its GLB came in as flat gray
    and white, and the way out was re-exporting it as OBJ. It now keeps each material (its name, the
    base color image and, for BLEND, its alpha) and the texture coordinates of the set the image
    uses; images inside the GLB or in data URIs are read like any texture file, and one next to a
    .gltf is found by its URI, %20 and all — a URI that would leave th...
Read more

3D New Era AI v2.0.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 21:39
v2.0.0
1a561ba

Added

  • ergonomics, electrical, plumbing and lighting take level, the storey to review, as
    layout and home already did. They reviewed only the storey shown in the editor, so an agent
    had to switch the person's view to review another floor, and a review of the upper floor, left
    shown, quietly became the review of the house. The storey shown is left as it was.
  • render_3d takes level: a storey draws it and the ones below, all draws every one. It drew
    what the editor showed — the selected storey and those below — so the same camera rendered the
    stair's landing without the floor above it when the ground floor happened to be selected, and
    checking the connection meant switching the person's view.
  • A flight of stairs built by hand is a stair: update(role="stair") on the group or the solid
    that draws it opens its hole in the floor of the storey it climbs to, as the catalog's flight
    does. Before, only the catalog's did, so a staircase of drawn treads and landings meant cutting
    the upper room's outline around it by hand.
  • A rules tool answers what a review checks against — the NBR 5410, 16264, 5626 and 8160
    tables behind electrical and plumbing, what each check_layout problem means, how
    ergonomics scores — and the same texts are resources, newera://rules/<topic>.
  • The MCP tool surface keeps its own rules as it grows, as tests (docs/MCP-TOOLS.md lists
    them): a byte budget per tool that only goes down, names that say whether a tool reads or
    writes, descriptions that neither order the model around nor name a tool that is not there,
    choices typed as enums, unknown arguments refused, and a BM25 tool search over the surface
    that must keep finding the right tool for 82 requests agents make.
  • A project says which country and state it is in — set_home(country=…, region=…), beside
    the city it already had — and that decides which codes judge it. A project in the United
    States is reviewed against the IRC 2024 (room areas and sides, ceiling heights, daylight, the
    clearances in front of fixtures, hallways), the IRC and NEC kitchen outlets and ICC A117.1
    for a wheelchair; what those codes leave unsaid is still measured by the Brazilian standards,
    as a reference.
  • Rooms named in English — "Bedroom", "Kitchen", "Powder room" — are recognised by every check,
    electrical, plumbing, lighting and Wi-Fi included; before, nothing recognised them.
  • Review findings can be said in English, and the window shows them in English when it speaks
    anything but Portuguese. What they are accepted by does not change.
  • Installing and uninstalling are counted, per system: the three installers post one event to
    3dneweraai.com/ping saying which operating system and architecture, whether the app came
    from a published release or was compiled on the machine, and whether this was the first
    install. They draw the installation id the app then uses, so an install and the first run are
    one installation in the count and not two.
  • Crash reports from builds that carry no DSN — what compiling the app yourself gives, unless
    NEWERA_SENTRY_DSN is set for the build — now reach Sentry through 3dneweraai.com/ping/sentry, which signs the envelope with the DSN the
    site holds. Those crashes were seen by nobody before.

Changed

  • Breaking: the MCP tools have new names, and some are one tool now (59 → 53, the server
    instructions list them all by what they are for). A read is a noun and the tool that changes it is
    edit_<noun>: get_home → home, set_home → edit_home, check_layout → layout,
    trace_background → background, fill_lighting → edit_lighting, checkpoints → history.
    new_home, open_home and save_home are file with action; undo, redo and checkpoint are
    edit_history; split_wall and merge_walls are edit_walls; set_background and trace_walls
    are edit_background; export_plan and export_cut_list are export (what=cut_list for the
    cut list). The skills, the hosted service and the browser tab speak the new names; an agent that
    calls an old one is told the tool does not exist.
  • The tool list an agent reads on every conversation is a quarter smaller (149 KB to 113 KB): the
    reviews' descriptions say what they answer and point to rules for the tables, output schemas go
    out without their field descriptions, and defaults that only restate absence are left out. The
    descriptions use the words people search with, so a tool search finds the right tool for all 86
    requests in the test set, and the first three hold it for 96.5 % of them (90 % before).
  • A tool that refuses a call answers inside the result (isError) on the desktop and newera mcp,
    as the hosted service and the browser tab already did, so the agent reads why and tries again
    instead of a client showing a protocol error to nobody.
  • Every tool refuses an argument it does not have, by name and with what it takes instead —
    before, forty of them dropped it in silence, so a misspelled dry wrote. An argument given with
    an action it does not belong to (dx with rotate) is refused the same way. Every choice
    (action, kind, view, quality…) lists its values in the schema, and dry, fixed and
    facing say what they take when given something else.
  • How much a standard obliges depends on where the project is: an ABNT standard is an error in
    Brazil and a warning in Miami, and the IRC the other way round. Electrical, plumbing and
    railing findings follow the same rule, so NBR 5410 no longer accuses a project abroad.
  • The lighting reply cites the table each reference value comes from — NBR 5413 or
    NBR ISO/CIE 8995-1 — instead of both every time.
  • The usage count no longer needs a secret inside the binary: it goes to the site's own
    endpoint, which holds the Google Analytics secret and forwards it. Releases were being built
    without that secret, so nothing was counted at all; and a build from source counted nothing by
    design. Both now count the same.
  • The count says the country Cloudflare already knows from the connection, and the visitor's
    address is not passed on to Google.
  • A debug build and CI count nothing and report nothing, which is what the missing secret used
    to accomplish by accident.

Fixed

  • A door, a point or a cabinet put on a wall now stands on that wall's storey. Before, place,
    joinery and cabinet_run put it on the storey shown: a door given a ground-floor wall while
    the upper floor was selected was made upstairs, loose and opening nothing, and an outlet on
    that wall was refused as having no wall to hold it. Fixed points are also judged against the
    walls and ceilings of their own storey.
  • layout(level="all") no longer lists every piece that stands over another on the storey
    below. Pieces of two storeys were an overlap wherever their plans crossed — a sofa downstairs
    and a bed upstairs, a roof over the furniture — which buried a real problem under hundreds of
    cross_level rows with no height shared. They are now one only where they share height in the
    building (storeys drawn at the same elevation, a piece reaching into the storey above), and
    the extent's z is that shared height.
  • ergonomics judges a bathroom as a bathroom. A bowl set into a vanity — a "cuba" — was read as
    a kitchen sink wherever it stood, so a bathroom with a countertop and a bowl, or a double vanity,
    was reviewed as a kitchen (the five work zones, 366 cm of counter) and still said to have no
    basin. A bowl in a bathroom is now a basin; a bathroom or a laundry is never reviewed as a
    kitchen; and the cabinet under a vanity asks the basin's 40 cm in front, not a kitchen's 85.
  • ergonomics counts the whole house for what it says of the house. Beds, bedrooms, bathrooms,
    seats at the table and wardrobes were counted on the storey shown only, so reviewing the upper
    floor of a house said there was no seat at the table and no bathroom — and advised adding them.
    capacity and the occupancy findings now add up every storey being designed.
  • A glass sliding door lights and airs its room in ergonomics, as the French window already
    did. The catalog's door-sliding is drawn with glass leaves, but only windows were counted, so
    a living room opening onto its balcony through a 220 × 220 cm glass door was said to have no
    window.
  • edit_lighting keeps every fixture it places whole inside the room. It kept only the centers
    inside, so in an L-shaped room a column of the grid could fall a few centimeters from the inner
    corner's edge and the fixtures there crossed into the next room (layout then called them
    outside_rooms). A fixture now stands at least half its diagonal off every edge.
  • A guard in front of a window no longer blocks it in layout. A bar railing, a glass
    balustrade or a balcony closure was measured by its box, as if it were a solid panel, so a
    landing guard across a stair window came out as blocks_window. Guards are now left out, like
    plants and glass already were.
  • home says a piece's finish, as mat, in the words place and update take it. It said a
    wall's and a floor's, never a piece's, so a finish set on a cabinet front could not be read back
    to check it had taken — and a dry run of a new finish answered that nothing changed.
  • A finish that is only a color — mat:"#c8b89a" on place, update or a solid — paints the
    piece. It was stored as a finish the 3D does not draw (a piece draws a pattern or an image), so
    the call was accepted and nothing changed on screen; it now sets the piece's color, unless a
    color is given in the same call.
  • An item set into joinery — a sink bowl, a cooktop, an oven — takes its own color, mat and
    opacity in update. It was refused like a board the host builds, so repainting a bathroom
    meant leaving the bowl as it was or changing the countertop around it. The item is carried ...
Read more

3D New Era AI v1.10.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 20:31
d508e3b

Changed

  • The paid plan is supported through Buy Me a Coffee instead of Paddle, whose
    verification a seller in Brazil could not get through. The account page sends people to
    the Buy Me a Coffee membership page and the webhook (/billing/buymeacoffee) follows
    the membership.* and recurring_donation.* events. A cancelled membership keeps the
    plan until the end of the period already paid for, as before.
  • What ties a payment to an account is the address it was paid with, not an id carried
    through the checkout: Buy Me a Coffee's page takes nothing of ours along. The support
    page shows the account's address and asks for it, and an address with no account yet
    gets the one a sign-in link would have made.
  • Closing an account no longer stops the charges: Buy Me a Coffee gives a seller no way
    to cancel a membership. The account page says so before and after closing, and the
    plan stops here either way. The warning counts the subscriptions left from Paddle too,
    which used to be cancelled through an API this no longer holds a key for.
  • A support button, in Buy Me a Coffee's yellow, at the left of the bar on the site, at
    the right end of the editor's tool bar — desktop and browser — and on the account
    pages. It follows the language around it; the membership is charged in US dollars
    wherever it is pressed. Too narrow for words, the editor's becomes one more button the
    size of the tools beside it, with the cup alone, and the tools scroll underneath rather
    than pushing it off the edge.
  • The pricing, terms, refund and privacy pages show one language instead of stacking two.
    They pick it the way the home page does — ?lang=, then what was last chosen, then the
    browser — and carry a PT/EN switch. Both texts stay in the page for a reader without
    JavaScript and for a crawler, and the tab's title follows the language too.
  • Those four pages name the project's maintainer rather than a company, and no longer
    claim a merchant of record: Buy Me a Coffee is a platform, not a reseller, so the
    seller is whoever maintains the project and the tax is theirs. Prices are stated in US
    dollars, the currency actually charged — Paddle's localised checkout is gone.
  • Documentation for contributors, in English: a rewritten README, a docs index,
    docs/STANDARDS.md (was NORMAS.md), docs/DISTRIBUTION.md, and SECURITY.md and
    CODE_OF_CONDUCT.md at the root. make lists its targets in English.
  • The example plugin is examples/plugins/room-areas (was plugins/quadro-areas), in
    English. Showcase images have English file names.
  • The review bot reads its rules from .coderabbit.yaml in the repository instead of a
    dashboard nobody outside the org can see: clippy treated as a build failure, the
    newera-mcp tool shapes treated as a public contract, and outside contributors
    allowed to talk to the reviewer on their own pull request.
  • A prose-only change no longer runs the whole CI. Editing a README, docs/ or an issue
    template used to spend eighteen minutes across seven jobs to prove that Markdown still
    compiles. Markdown runs a Docs workflow instead — markdownlint against rules the
    repository carries in .markdownlint-cli2.jsonc, spelling, and the relative links
    between pages, so a renamed page cannot quietly orphan the link to it. make docs-lint
    runs the same three locally. A licence file runs nothing at all, having nothing any of
    the three can check. The plugin's own Markdown is exempt from the exemption: the Format
    job validates every SKILL.md.
  • main is protected: a pull request with its checks green is the only way in, force
    pushes and deletion are refused, and history stays linear. The path filtering that
    skipped prose moved out of the workflow triggers and into a Changed paths job, because
    a required check that never reports blocks a pull request forever while a skipped one
    counts as a pass. scripts/changed-kind.sh decides, and proves itself against a table
    of cases on every run.
    A single CI and Docs check speaks for the jobs behind it, because a matrix job that
    is skipped reports once under its unexpanded name and the per-OS names would never
    arrive on a prose-only run.

Removed

  • Internal planning notes and launch material from docs/, personal helper scripts,
    and the packaging/ snapshots of 1.7.0; releases generate the winget and Homebrew
    files themselves.

Fixed

  • The ground no longer shows through a doorway. A floor stopped at the inner face of the
    walls around it, so the band under a wall belonged to no room and the grass showed
    through wherever a door or a passage cut the wall away. Floors now run under the walls
    they touch: to the middle of a wall with another room behind it, where the two floors
    meet as they do at a real threshold, and through to the far face of a wall with nothing
    behind it.
  • A long name no longer pins the side panel open. A plan note a paragraph long
    ("AÉREOS: 80 geladeira + 106 cozinha…") made the panel as wide as itself and the drag
    handle could not bring it back. Names are cut short with an ellipsis and shown in full
    on hover, and a click on a name now selects its row instead of selecting the text.

What's Changed

  • fix: floors under the walls, a long name that pinned the panel open, and a twenty-second dev loop by @leandrodaf in #20
  • chore: a profile to develop on, and the plan you are debugging reopened after every build by @leandrodaf in #21
  • chore: the review bot reads the house rules from the repo by @leandrodaf in #22
  • chore: prose leaves the Rust CI and gets a gate of its own by @leandrodaf in #23
  • chore: the checks report a status even when they have nothing to do by @leandrodaf in #24
  • fix: one check per workflow, because a skipped matrix hides its names by @leandrodaf in #26
  • docs: how a change lands, now that main will not take one directly by @leandrodaf in #25
  • feat: the paid plan is supported through Buy Me a Coffee, not Paddle by @leandrodaf in #27
  • fix: the support button moves to the right end of the tool bar by @leandrodaf in #28
  • chore: release 1.10.0 by @leandrodaf in #29

Full Changelog: v1.9.2...v1.10.0

3D New Era AI v1.9.2

Choose a tag to compare

@github-actions github-actions released this 25 Sep 00:42
v1.9.2
a7f8e73

Changed

  • mcp.3dneweraai.com, opened in a browser, goes to 3dneweraai.com instead of a blank
    "not found".

Full Changelog: v1.9.1...v1.9.2

3D New Era AI v1.9.1

Choose a tag to compare

@github-actions github-actions released this 25 Sep 00:15
v1.9.1
ecefd99

Changed

  • The paid plan is sold through Paddle instead of Polar, which cannot pay out to a seller
    in Brazil. The account page opens Paddle's checkout (/billing/checkout), shows the
    price in the buyer's currency, and "Manage subscription" opens Paddle's customer portal.
    Closing an account stops the charges at the end of the paid period.
  • The site has a pricing page and a refund policy (full refund within 14 days), and the
    terms name the seller and Paddle as the merchant of record.

Full Changelog: v1.9.0...v1.9.1

3D New Era AI v1.9.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 22:27
v1.9.0
a4aae87

Added

  • Every tool declares an output schema, and every answer carries structuredContent
    laid out from what it already says: a JSON object as it is, a list under rows, an
    ok rev=N ids=… line split into its fields, an image as its type. The text the tools
    answer is unchanged.
  • Every argument of every tool says what it is, nested shapes included.
  • The MCP handshake names the server's icon, description and website.
  • The plugin points at the hosted server (mcp.3dneweraai.com), so it works with nothing
    installed; 3d-new-era-ai-desktop keeps the local app and its live window.
  • A public page at 3dneweraai.com/connector/ says how to add the hosted server to Claude
    and ChatGPT.

Changed

  • Every hosted tool declares the OAuth scheme it needs, and sign-in accepts the
    offline_access scope ChatGPT asks for to stay signed in.

Fixed

  • With the walls down or cut away in the 3D view, what is held up from the floor stays
    however close to a wall it stands: a worktop on its cabinets, a desk top on its frame,
    a vase on the worktop and a cabinet's own top board used to vanish with the wall. Only
    what hangs on a lowered wall goes now, and whatever rests on it.
  • The site's one-click buttons and legal links are big enough to tap.

What's Changed

  • fix(render): keep what rests on the floor when walls come down by @rfoel in #19

Full Changelog: v1.8.0...v1.9.0

3D New Era AI v1.8.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 17:55
v1.8.0
e0f8dbf

Added

  • The plan shows up inside the chat: show_plan opens an interactive viewer (pan, zoom,
    a 3D view on a click, "open in the editor") in clients that speak MCP Apps — Claude,
    ChatGPT, VS Code and others.
  • Every tool says whether it only reads or changes the plan, with a title, so an AI
    client runs reads without asking and asks before each change. Reads and changes are
    separate tools now: cameras/edit_cameras, levels/edit_levels, video/
    edit_video, variants/edit_variants, checkpoints/checkpoint, plugins/
    run_plugin, disciplines/edit_disciplines, electrical/edit_electrical,
    plumbing/edit_plumbing, lighting/fill_lighting, annotations/
    edit_annotations, trace_background/trace_walls, cut_list/export_cut_list;
    findings of every review are accepted with accept, and who lives there is kept with
    set_home(people=…).
  • newera mcp (stdio) edits the plan in the open window when the editor is running;
    --standalone keeps a project of its own.
  • One-click installs: newera-mcp.mcpb for Claude Desktop in every release, a plugin
    with skills for Claude Code, Codex, Cursor and Gemini CLI, and buttons for Cursor, VS
    Code and LM Studio.
  • Accounts at mcp.3dneweraai.com: sign in with an emailed link, and Claude, ChatGPT and
    other AIs reach your editor tab at one fixed address, with no secret to paste. With no
    tab open they work on projects kept in your account, and exports come back as links.
  • Privacy policy and terms of use on the site.

Changed

  • The editor's AI link comes back by itself, at the same address, when the service
    restarts.
  • A project opened by link (?project=) opens even when the tab had work of its own to
    restore.

Fixed

  • The AI link no longer stays on "connecting" forever when the relay refuses a tab.
  • show_plan said "-0 m²" for an empty plan.

Full Changelog: v1.7.0...v1.8.0

3D New Era AI v1.7.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 14:39
v1.7.0
b06e23d

Added

  • Axes in the top right corner of the 3D view, as in Blender. Click a ball to look at the
    house from the front, back, left, right or top; drag the disc to orbit. The top view
    reads like the plan, x right and y down.
  • Walls in the 3D view can come down to show the rooms: up, cutaway (the walls between
    the camera and a room drop to 40 cm and follow the camera as it turns) or down.
    Ceilings, roofs and the doors, windows and pieces hanging on lowered walls hide with
    them. Three buttons in the toolbar and the View menu switch it.
  • render_3d takes walls=cutaway|down to draw the same way, so an agent can see the
    furniture of a room from the side.

Fixed

  • The selected tool and the AI button in the toolbar no longer change size when the
    pointer goes over them, which nudged the buttons beside them.

What's Changed

  • Name every ergonomics rule so wording stops being identity by @leandrodaf in #14
  • fix: keep the selected tool and the AI button the same size on hover by @rfoel in #18
  • feat: add axes to the 3D view to look from each side by @rfoel in #15
  • feat: bring 3D walls down to show the rooms by @rfoel in #17

New Contributors

  • @rfoel made their first contribution in #18

Full Changelog: v1.6.0...v1.7.0

3D New Era AI v1.6.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 16:22
v1.6.0
1b1f4fd

Added

  • Every catalog item is marked with its front and back, and with whether its back belongs
    on a wall (bed, sofa, wardrobe, toilet, TV), stands free (armchair, chair) or has no
    front at all. The catalog tool lists it, and a test keeps new items from going unmarked.
  • place takes facing (+x, -x, +y, -y, a point or an element id) instead of an
    angle, and its reply says where each front ended up. A piece whose back belongs on a
    wall, placed beside one with no angle, turns its back to that wall.
  • check_layout reports backwards: a sofa, bed or toilet facing the wall its back
    belongs on, with the angle that turns it around.
  • catalog_faces example renders every catalog item from the front and from the back.

Fixed

  • Pendants, spots, LED panels and ceiling points stay on the ceiling the 3D draws — flat,
    sloping or under a roof — through every edit, storey height change and project load.
    A pendant keeps its shade height and its cord takes the difference.
  • Recessed spots set into the slab are no longer reported as above the ceiling.
  • The editor's WebGL notice names the real cause on Chrome for Linux, where WebGPU ships
    turned off, and says how to turn it on.

Changed

  • rmcp 3.4.0 (ServerConfig), clap 4.6.7, and current GitHub Pages and Wrangler actions.

What's Changed

  • chore(deps): bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #6
  • chore(deps): bump cloudflare/wrangler-action from 3 to 4 by @dependabot[bot] in #7
  • Bump clap to 4.6.7 and rmcp to 3.4.0 by @leandrodaf in #10
  • Name the real cause when the editor falls back to WebGL by @leandrodaf in #11
  • Mark every catalog item's front and stop agents placing furniture backwards by @leandrodaf in #12
  • Keep spots, panels and pendants hung from the ceiling the 3D draws by @leandrodaf in #13

New Contributors

Full Changelog: v1.5.0...v1.6.0