mail/himalaya: update to 2.0.0
Added
Added Gmail REST API support: a [gmail] account backend behind the shared mail commands (--backend gmail), plus a protocol-specific gmail command exposing the full REST surface (profile, labels, messages, attachments, drafts, threads, history, settings). Authenticates with a single OAuth 2.0 bearer token (gmail.auth.token.raw / .command), the only authorization Gmail's REST API accepts.
Added Microsoft Graph REST API support: a [msgraph] account backend behind the shared mail commands (--backend msgraph), plus a protocol-specific msgraph command exposing the Graph mail surface (profile, mail-folder, message, attachment). Mirrors [gmail], authenticating with a single OAuth 2.0 bearer token.
Restored the RFC 2971 ID-after-auth quirk as imap.id.{auto, fields}, replacing the v1.2.0 imap.extensions.id.send-after-auth flag dropped during the v2 migration.
Brought the m2dir backend to CLI feature parity with maildir (messages, flags, envelopes). Mailbox rename and message copy / move still await io-m2dir support.
Added --save <MAILBOX> to messages send, mirroring the flag on messages compose / reply / forward.
Added --send to messages add (alias messages save), mirroring messages send --save.
Added raw passthrough commands imap raw <command> and smtp raw <command>.
The wizard now pre-fills mailbox.alias.* from the server, so a generated account has a working default mailbox (the inbox alias, which backs commands that omit -m/--mailbox) and known Sent/Drafts/Trash/… targets without hand-editing ids. JMAP reads the RFC 8621 mailbox roles live over the tested connection. Gmail and Microsoft Graph map their fixed system-label ids (INBOX, SENT, …) and well-known folder names (inbox, sentitems, …). IMAP pins the reserved INBOX only. The other special-use roles await LIST RETURN (SPECIAL-USE) support in io-imap (upstream imap-codec has none yet).
[44 lines not shown]
devel/gitpane: update to 0.10.3
[0.10.3] - 2026-08-06
Changed
Repo rows were redesigned around one aligned seam. Names and branches now form the only two aligned columns (the branch column sizes to the widest visible branch, capped to a third of the panel), and everything after the branch (stash and worktree toggles, ahead/behind arrows, submodule markers, fetch warning, live-session dot, changed-file count) packs tightly per row. A row's indicators sit right next to its branch instead of floating in reserved columns that most rows leave empty, and clicking the stash/worktree toggles still hits exactly the drawn cells.
The default branch is dimmed instead of loud. main and master now render in a new branch_default theme color (DarkGray by default, overridable in custom themes), so a clean repo on its default branch reads as a quiet row and only deviating branches carry the branch color.
Removed
The [ui] compact_repo_list option. The new layout packs rows by default while keeping names and branches aligned, which covers what both of the old modes were for; a leftover key in an existing config is ignored and disappears the next time gitpane saves the config.
[0.10.2] - 2026-08-06
Added
The file context menu gained "Copy path". Right-clicking a changed file now offers copying its absolute path (resolved against the active worktree, like Open folder) to the clipboard via OSC 52, so it works over SSH too.
Status-bar toasts now pulse. A toast flashes its accent color every 150ms for its whole lifetime, so an OK or ERROR message no longer appears motionless in the bar and slips by unnoticed.
A reverse-alphabetical sort mode. s now cycles A-Z, Z-A, then dirty-first, and every press shows a "sort: ..." toast in the status bar so the active mode is never a guess (previously the only indicator was a small label buried in the hint line, which truncates on narrow windows).
Path completion in the add-repo input now shows its candidates. The first Tab extends what you typed to the longest common prefix and opens a menu above the input listing every matching directory; Tab and the arrow keys then move a visible selection through the list, and Esc closes the menu before it closes the input. Previously Tab silently replaced the input with the first match and cycled through the rest blindly.
[11 lines not shown]
devel/gitnr: update to 0.3.0
v0.3.0
What's New
- Shell completions — new completions command to generate shell completions for bash, zsh, fish, elvish, and powershell (#15)
- Linux arm64 binary — pre-built aarch64 binary now included in releases (#13)
- Homebrew support — brew install gitnr via homebrew-core (#19)
Fixes & Maintenance
- Fixed CLI showing an error instead of help when run without a subcommand
- Resolved 4 dependency security vulnerabilities (openssl, idna, hashbrown)
- Updated all dependencies to latest compatible versions
- Fixed clippy warnings for latest stable Rust toolchain
v0.2.2
- Updated dependencies
py-tinydb: updated to 4.9.0
4.9.0
Drop official support for Python 3.8 and 3.9. Both versions have reached their official End of Life (Python 3.8 in October 2024, Python 3.9 in October 2025). TinyDB now requires Python 3.10 or later.
Fix: Make Table.update(doc_ids=...) and Table.remove(doc_ids=...) behave consistently with Table.get(doc_id=...) when given document IDs that don't exist: missing IDs are now silently skipped and the returned list only contains IDs that were actually updated/removed. Previously both methods raised KeyError, and update could leave the table in a partially-updated state when a mix of existing and missing IDs was passed
Fix: Prevent TypeError when passing unhashable extra arguments (like lists or dicts) to Query.test()
Fix: Prevent FileNotFoundError when creating a database file in the current directory without an explicit path prefix
Fix: Correctly handle falsy values (like 0 or None) stored in LRUCache
Improvement: More precise type hints for Table.get
Improvement: Correct the type hints for Table.update and tinydb.operations to use MutableMapping, so transform functions that modify documents in place type-check correctl
Reject and normalize non-colon NIC MAC addresses
## Problem
The NIC `mac` field accepted dash-separated, no-separator and mixed forms, but libvirt's `defineXML` only parses colon-separated MACs — so a VM or container configured that way was accepted by the API and then failed to start with an XML parse error. Existing installs can already have such addresses stored.
## Solution
- **Colon-only validation.** The shared `MACAddress` type now matches colon-separated hex only. It is anchored with `\Z` rather than `$`, because Python's `$` also matches before a trailing newline and would otherwise let through a value libvirt still cannot parse.
- **Lowercase normalization.** MAC addresses are case-insensitive, but every comparison we make against one is a plain string compare, so an uppercase spelling was a distinct value to the per-instance duplicate check. The type now lowercases, and `device_uniqueness_check` case-folds the NIC identity so rows written before this still compare correctly.
- **Migration for stored addresses.** Existing `vm_device` / `container_device` NIC rows are rewritten to the canonical form. Anything not carrying a valid 48-bit address is replaced with a freshly generated MAC — that includes non-string values, which an incus migration can leave behind when PyYAML resolves an unquoted address such as `52:54:00:12:34:56` as a YAML 1.1 base-60 integer.
Frozen API versions keep their original pattern, so a client pinned to 25.10 that sends a dash-separated MAC is now rejected at validation instead of failing later at start.
py-packaging: updated to 26.3
26.3 - 2026-08-03
Features:
* Add a public :class:`~packaging.ranges.VersionRange` API and
:meth:`SpecifierSet.to_range() <packaging.specifiers.SpecifierSet.to_range>`,
representing the versions a specifier set accepts as an interval set that
supports intersection, union, difference, complement, set relations,
membership tests, and filtering.
:meth:`~packaging.ranges.VersionRange.to_specifier_set` converts a range back
to a :class:`~packaging.specifiers.SpecifierSet` where a PEP 440 form exists.
(:pull:`1267`, :pull:`1270`, :pull:`1298`)
* PEP 808: accept ``Metadata-Version: 2.6``. (:pull:`1194`)
* Add a ``limit`` argument to ``parse_tag()`` for compressed tag sets.
(:issue:`1220`)
* Add a ``prefer_sdist_predicate`` argument to ``Pylock.select()`` to prefer
source distributions over wheels for selected packages. (:pull:`1334`)
[7 lines not shown]
dounmount(9): temporarily enable recursion for the covered vnode lock
For some complex nullfs mount configurations, it is possible to get the
covered vnode lock for the mount shared with some inside-mount vnode
lock. Then at unmount time, vflush() would recurse on the covered vnode
lock when reclaiming the vnode.
Work around it, by temprorarily allowing recursion on the covered vnode
lock. Disable recursion after the unmount if it was not enabled before.
PR: 297174
Reviewed by: jah
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D58567
[libc] Add getpwent, setpwent, and endpwent entrypoints (#213076)
Added getpwent, setpwent, and endpwent functions using the internal
pwd_utils line parser.
* Implemented getpwent.cpp, setpwent.cpp, and endpwent.cpp entrypoints
* Added database iteration state and helpers (open, close, read_next)
under namespace passwd in pwd_utils
* Registered entrypoints in config/linux/*/entrypoints.txt
* Added CMake target guards for File and platform_file to support
overlay builds and cross-platform targets
* Added unit tests in libc/test/src/pwd/getpwent_test.cpp
Assisted-by: Automated tooling, human reviewed.
[libc][NFC] Format all CMake files under libc/ (#213132)
Use cmake_format.py from #213102 on all CMakeLists.txt files in libc/
Assisted-by: Automated tooling, human reviewed.
[lldb] Make RegisterFlagsDetector into RegisterTypesDetector
In future it may be generating things other than flags. Functionality
is the same, but the interface changes to use RegisterType.
[lldb] Refactor RegisterTypeBuilder
This prepares it for emitting union types. Major changes:
* Entry function is now a dispatcher to builder functions for each type.
* Name mangling is standardised.
* The register name parameter is no longer needed and so was removed.
Revert "[SCEV] Speed up forgetLoop by avoiding def-use walk for loop-header PHIs" (#212485)
Reverts https://github.com/llvm/llvm-project/pull/201572
Multiple miscompilations are reported, see
https://github.com/llvm/llvm-project/issues/207744,https://github.com/llvm/llvm-project/issues/212027
That commit made forgetLoop() rely on LoopUsers[L] and stop walking the
def-use chain of the loop-header PHIs. This is insufficient, because
some cached data is derived from the underlying IR of SCEVUnknown, it is
not reachable from LoopUsers[L].
After that commit, forgetLoop() no longer invalidated them, so stale
UnsignedRanges / SignedRanges, ConstantMultipleCache, ValuesAtScopes
cause miscompilations.
(cherry picked from commit 1c0eda0d2371a6a755f90299892a7b89dc917442)
[InstCombine] Remove binop(concat(x,y),concat(a,b)) -> concat(binop(x,a),binop(y,b)) fold (#214285)
A similar fold is cost-driven in VectorCombine, but this InstCombine
fold was then undoing the decision
Seems to an old fold added by @rotateright (#32373) before we created
VectorCombine to do this properly
Fixes #205707
[lldb] Store all XML register types in a single string map
We are assuming that their ID's are unique, so there's no need to keep
separate maps. We can do basic type checking by checking the kind of
the type pointed to.
A few more methods were added to the base RegisterType. GetSize()
returns 0 for enums because enums don't have a size until they are
used by a register. This is not ideal but it works for now.
[libc++][libc++abi] Merge the operator new implementations into a shared file (#213427)
Instead of copying the code around we can simply share a file that
actually implements operator new/delete and include that file in the two
places that need the definitions.
[mlir][affine] Implement ValueBoundsOpInterface for affine.for (#214614)
`scf.for` has provided induction variable bounds through
`ValueBoundsOpInterface` for a long time, but `affine.for` has no model
at all. `ValueBoundsConstraintSet` therefore cannot derive any bound for
an affine induction variable, not even `iv >= lowerBound`. Queries just
return "unknown", which is easy to miss because it looks the same as a
bound that genuinely cannot be proven.
Add a model for the induction variable. The lower bound of an
`affine.for` is the maximum over the results of its lower bound map and
the upper bound is the minimum over the results of its upper bound map,
so the induction variable is constrained by every individual result.
This follows how `AffineMinOpInterface` and `AffineMaxOpInterface` in
the same file align their maps with the constraint set; the shared logic
is factored into `alignBoundExpr`.
When both maps have exactly one result the step is taken into account as
well, following `scf::ForOpInterface`: the induction variable is always
[29 lines not shown]
[SPIR-V] Lower nested aggregate insertvalue operands (#204239)
Fix a crash in the SPIR-V backend when an aggregate `extractvalue`
result is used as the base of a later `insertvalue`.
The failing pattern is:
```llvm
%e = extractvalue [1 x [1 x i64]] %a, 0
%i = insertvalue [1 x i64] %e, i64 %x, 0
%r = insertvalue [1 x [1 x i64]] %a, [1 x i64] %i, 0
```
`SPIRVPrepareFunctions` rewrites aggregate function arguments and
returns to `i32` SPIR-V value IDs. The `llvm.spv.insertv` intrinsic also
models its composite operand as an `i32` value ID. However, an
intermediate aggregate `extractvalue` could still be rewritten to
`llvm.spv.extractv` with an LLVM aggregate result type. Passing that
aggregate-typed value to `llvm.spv.insertv` made
[14 lines not shown]