今日已更新 133 条资讯 | 累计 37990 条内容
关于我们

标签:#ens

找到 2371 篇相关文章

AI 资讯

Coordinate-based UI tests break. So we read the accessibility tree instead — from inside the simulator.

Every recorded mobile test I have ever inherited died the same way: someone moved a button. The recording said "tap at (340, 712)". The redesign moved that button up by one row, and the test kept tapping — now on empty space, or whatever happened to land there instead. It didn't fail right away. Three sprints later, it started failing in confusing ways, and by then nobody trusted the suite anymore. The fix isn't a better recorder. It's recording a different thing: not where you tapped, but what you tapped. That needs an element tree, and for a while we didn't have one. tapflow is an open-source, self-hosted tool that streams iOS simulators and Android emulators into a browser, so a whole team can test builds without installing anything. Until now, everything it moved was pixels in one direction and taps in the other. This post is about getting an element tree out of a simulator with no window, on both platforms. What we do with that tree — replaying flows that survive a redesign — is the next post in this series. The automation axis this feeds — the flow runner and the MCP server — is experimental . The manual browser QA path is the mature one. The constraint: no WebDriverAgent, and no simulator window tapflow already injects touches into the iOS simulator without WebDriverAgent — it loads CoreSimulator.framework and pushes HID events through SimDeviceLegacyHIDClient (that story is ep.1 ). Streaming reads the framebuffer IOSurface directly. Neither path needs Simulator.app on screen, and that's deliberate: an agent Mac in a closet running four simulators shouldn't be babysitting four windows. So whatever we used for the tree had to follow the same rule. No WDA to install and keep in sync with Xcode. No simulator window on screen. Our first attempt ran into exactly that limitation. macOS exposes an accessibility API ( AXUIElement ), and Simulator.app publishes its content through it. We wrote a helper around it, and it worked perfectly on a developer's laptop. On the

2026-07-30 原文 →
AI 资讯

From Open Source to Paid Product: Is AI Accelerating the Shift?

I think many of us have already noticed that a growing number of open-source projects and libraries are moving towards commercial or dual-licensing models. In the .NET ecosystem, several widely used libraries have taken this path over the past year or so. AutoMapper and MediatR introduced commercial editions under a dual-licensing model, Fluent Assertions began requiring a paid licence for commercial use with version 8, and MassTransit 9 became a commercial product. These libraries were widely used in .NET applications and I mean widely used. Many projects treated them almost as a standard part of the ecosystem. Now, the same change is reaching the frontend world. PrimeTek recently announced that future major versions of PrimeNG, PrimeReact and PrimeVue will no longer be released as open source. All these projects were widely adopted, and many commercial applications depended heavily on them. Their licensing changes were primarily driven by the cost of long-term maintenance, but this raises a broader question: Is AI also changing the world of open source? You have probably already read many articles about code inflation. With AI, we can generate a huge amount of code in a very short time, even if the quality is sometimes questionable. The same thing is happening in open source. Maintainers can now receive more AI-generated issues, pull requests and feature requests than they can realistically review. Producing code has become cheaper, but understanding, testing and maintaining that code still requires significant human effort. Maintainers can become overwhelmed very quickly. AI may also discourage some developers from publishing their work publicly. Even small experiments, educational repositories and proof-of-concept projects can become training material for large language models. Some authors may therefore decide to keep their repositories private because they do not want AI companies learning from their work without permission, attribution or compensation. Licens

2026-07-30 原文 →
AI 资讯

I’ve been working on an open-source P2P file sharing app called MeshDrop (early beta, looking for honest feedback)

Hey everyone, For the past few months I've been working on a side project called MeshDrop. The idea started because I wanted a simple way to send files and folders directly between my own devices (and with friends) without uploading everything to cloud storage or relying on third-party servers. MeshDrop is built on the Holepunch ecosystem using Pear Runtime, Bare JS, and Hyperswarm. It supports direct transfers over LAN and can also connect over the internet using DHT hole punching with end-to-end encryption. I've also been experimenting with a few extra features like short 8-character pairing codes, cross-device clipboard sharing, and a remote drive feature that's still a work in progress. I'm still learning as I build this project, and I've been using AI coding tools alongside documentation, testing, and a lot of trial and error to help me move faster. I'm trying to understand the code and improve with every feature instead of just generating code and hoping it works. This is very early beta, so please expect bugs, rough edges, missing features, and probably a few questionable UX decisions. I'm sharing it now because I'd rather get feedback early than spend months building something people don't actually enjoy using. If you decide to give it a try, I'd really love honest feedback on things like: Does the overall workflow feel simple or confusing? Is the UI easy to understand? Did you run into any bugs or connection issues? Are there features you'd expect from a P2P file sharing app that are missing? Is there anything that feels unnecessary or poorly designed? Please don't hold back. Constructive criticism is exactly what I'm looking for. If something feels wrong, confusing, or badly designed, I'd much rather hear about it now so I can improve it. GitHub: https://github.com/aamirali51/MeshDrop Latest Beta: https://github.com/aamirali51/MeshDrop/releases/tag/v1.0.0-beta.1 Thanks for taking the time to read this. Whether you try it, report a bug, suggest a feature, o

2026-07-30 原文 →
开发者

AWS retired its free database migration assessment tool. The reason should change how you build developer tools.

On May 20, 2026, AWS ended support for DMS Fleet Advisor. Fleet Advisor answered a question every migration team asks first: what is actually in my database estate, and how hard will it be to move? It was free. It was fully managed. It was backed by the largest cloud provider on earth. It still lost. AWS's official notice says only: "After careful consideration, we decided to end support for AWS DMS Fleet Advisor." No reason given. But you don't need one — the documentation tells you. Here is what Fleet Advisor required before it would tell you a single thing about your databases: Install a standalone data collector in your local environment Create an Amazon S3 bucket Create IAM policies, roles, and users — via CloudFormation, which was the recommended path Create database users with the minimum required permissions on every source Establish network access from the collector to each database server Then you'd meet the ceilings: recommendations for up to 100 databases at a time, one-to-one target mapping only, no multitenant server support. Now picture running that gauntlet inside a bank. You are a Business Solution Architect. You have been asked to scope a migration. You do not yet have approval for the migration — that approval is what the assessment is for . And to produce the assessment, you must first request production database credentials, get an agent binary through software approval, provision an S3 bucket, and get an IAM stack past a security review. That is a six-week procurement conversation to answer a question you were hoping to answer this week. AWS's replacement recommendation is Migration Evaluator — a consulting-led engagement. Read that as the finding it is: AWS looked at self-serve migration assessment, and concluded that humans and services do it better than a product. I think they were half right. And the half they got wrong is the interesting part. The lesson: friction is a competitor, and it usually wins We talk about developer tools as if the

2026-07-30 原文 →
AI 资讯

Portable Agent Manifests with Host-Controlled Infrastructure

AI agents often begin as application code: a prompt, a model call, a few tools, and enough control flow to make the first example run. As the agent grows, the definition and the environment tend to collapse into each other. Model configuration lives beside credentials. Tool access is mixed with prompts. Persistence assumes a particular process. Deployment choices become part of the agent itself. That coupling makes an agent harder to inspect, test, move, and recover. We built Clear Ideas Agent Runtime around a different boundary: the agent definition should be portable, while the infrastructure that executes it should remain under host control. The Agent Manifest is the portable contract An Agent Manifest is a versioned YAML or TypeScript definition. It can describe: prompts and structured outputs; typed variables; conditions and loops; tools and MCP connections; approvals and webhooks; sandboxed code steps; sub-runs; limits and final outputs. A separate Agent Run Manifest supplies the values and execution choices for one invocation. That keeps the reusable agent definition distinct from the inputs and operational decisions associated with a particular run. Here is a small example: schemaVersion : " 1.0" name : research-brief variables : topic : type : string researchNotes : type : string briefDraft : type : string steps : - id : research type : prompt prompt : | Research {{ topic }} and return concise notes. outputVariable : researchNotes - id : draft type : prompt prompt : | Draft a brief using these notes: {{ researchNotes }} outputVariable : briefDraft The manifest describes the agent. It does not contain the credentials, infrastructure account, or persistence implementation that happens to run it. The host controls the operational boundary The host application supplies and controls: models and provider credentials; connections and tool authorization; persistence and artifact stores; local or remote compute; sandbox providers; telemetry; concurrency and resource

2026-07-29 原文 →
AI 资讯

Unknown Time Is Not Noon: Modeling Missing Temporal Data Without Inventing Facts

Missing data is not the same thing as a convenient default. That sounds obvious, yet temporal software regularly converts an empty time field into midnight, noon, the current time, or the start of a day. The interface may look complete after that conversion, but the program has silently changed an unknown fact into a known one. This matters anywhere an hour can change the result: medical timelines, transport schedules, legal deadlines, astronomical calculations, historical records, and calendrical systems. I encountered the problem while working with a BaZi calculation pipeline. A BaZi chart can use year, month, day, and hour components. If the birth time is absent, the honest result is a three-component analysis with hour-dependent conclusions withheld. Inserting noon would make the output look richer while making its provenance weaker. The useful engineering question is not “Which fallback time should we choose?” It is “How do we keep uncertainty visible through every layer of the system?” The public calculation evidence repository provides the concrete calendar-domain fixtures referenced below. The rest of this article focuses on the reusable software boundary behind them. Model knowledge, not just a string A common input model makes absence too easy to erase: const birthTime = form . time || " 12:00 " ; After this line runs, downstream code cannot tell whether noon came from the user or the fallback. Validation, analytics, caching, and the result renderer all see the same string. The information loss happens before the calculation begins. A small discriminated union keeps the two states separate: /** * @typedef {{ kind: "known", localTime: string, source: "user" }} * KnownTime * @typedef {{ kind: "unknown" }} UnknownTime * @typedef {KnownTime | UnknownTime} BirthTime */ function parseBirthTime ( value ) { const normalized = value ?. trim (); return normalized ? { kind : " known " , localTime : normalized , source : " user " } : { kind : " unknown " }; } This typ

2026-07-29 原文 →
开发者

A new way of coding!

Welcome to ForkMesh World Most developer tools start with another dashboard. We started with a beach. Not because developers desperately needed virtual sand, but because software is built by people, and people spend way too much time staring at rectangular windows. We're building ForkMesh World , a place where developers, open-source communities, and companies can actually hang out while building software. Not another Slack clone. Not another Zoom call. Something that's actually fun. You finish reviewing a pull request. Instead of closing your laptop, you walk outside your team's office. Someone is flying a drone over the island. Another team is racing cars down the road. A few contributors are hanging out on the beach after finishing a release. Someone jumps off the roof because... honestly, why not? (Don't try that in real life. Gravity has terrible UX.) This isn't replacing Git. It's making the community around Git feel alive. Your own office Every company and open-source project can have its own space inside ForkMesh World. Think of it as your team's home. A place for: Team meetings Community events Contributor onboarding Product demos Hackathons Launch parties Casual conversations Instead of sending someone a Discord invite and six documentation links, imagine saying: "Come by our office." Built for developers ForkMesh World is part of the larger ForkMesh ecosystem. ForkMesh is our open-source federated Git platform that lets developers own and preserve their repositories across a network instead of depending on a single hosting provider. We're trying to make developer infrastructure more resilient, while also making it a little more fun. Because open source shouldn't feel like filling out tax forms. More is coming We're only getting started. Some of the things we're working on include: 🏢 Company offices 🏖️ Beaches 🚗 Cars 🚁 Drones 🪂 Rooftop jumps (because games should be fun) 🎉 Community events 💬 Developer meetups 🛠️ Interactive spaces for open-source projects

2026-07-29 原文 →